2.5.1 示例
默认输出的格式包含三部分:
日志级别
日志记录器的名字
日志内容
这三部分可以用 | 连接。如果我们想改变日志格式,例如想加入日期时间、显示日志器名字,我们是可以指定 format 参数来设置日志的格式:
import logging
# 修改默认的日志显示级别
logging.basicConfig(filename="test.log", # 将日志保存到filename文件中
filemode='w', # 写入的模式
format="%(asctime)s | %(levelname)s | %(name)s | %(message)s",
level=logging.DEBUG) # DEBUG及以上的日志信息都会显示
logging.debug("这是一条[debug]日志!")
logging.info("这是一条[info]日志!")
logging.warning("这是一条[warning]日志!")
logging.error("这是一条[error]日志!")
logging.critical("这是一条[critical]日志!")
2.5.2 格式化参数
日志格式化输出提供了非常多的参数,除了时间、日志级别、日志消息内容、日志记录器的名字个外,还可以指定线程名,进程名等等,下面是一个总结:
关键字 含义
%(asctime)s 记录的时间(包括日期和时间)。
%(levelname)s 日志级别(例如,DEBUG、INFO、WARNING、ERROR、CRITICAL)。
%(message)s 日志消息文本。
%(name)s 记录器的名称。
%(module)s 记录日志的模块的名称。
%(filename)s 记录日志的文件的名称(包括路径)。
%(funcName)s 记录日志的函数或方法的名称。
%(lineno)d 记录日志的代码行号。
%(process)d 进程 ID。
%(thread)d 线程 ID。
在这个配置中,日志消息格式包括时间戳、记录器名称、日志级别和消息文本。我们可以根据实际需求灵活使用这些关键字来定制日志格式。
Q:为什么有些关键字的结尾是 s,有些是 d?
A:关键字的结尾是 s 或 d 取决于该关键字的数据类型和用途。具体来说:
结尾为 s 的关键字表示字符串类型,通常用于表示文本信息,如 %asctime 和 %levelname。例如,%(asctime)s 代表一个时间戳的字符串。
结尾为 d 的关键字表示整数类型,通常用于表示数字信息,如 %lineno、%(process)d 和 %(thread)d。例如,%(lineno)d 代表代码行号的整数值。
这种命名约定有助于在日志消息格式中正确解释和处理不同类型的数据。例如,当我们使用 %asctime 时,日志系统知道它应该将时间戳转换为字符串并将其包含在日志消息中,而使用 %lineno 时,它知道应该将代码行号作为整数包含在消息中。这样可以确保日志消息格式正确地处理各种类型的数据。
到这里为止,日志模块的基本用法就这些了,也能满足大部分应用场景,更高级的方法接着往下
原文链接:https://blog.youkuaiyun.com/weixin_44878336/article/details/133868928