乐趣区

python日志配置

先来一段程序告知 python 怎样配置日志。
logging.basicConfig(level=logging.DEBUG) # 设置日志级别
# 创建日志记录器,指明日志保存的路径、每个日志文件的最大大小、保存的日志文件个数上限
file_log_handler = RotatingFileHandler(“logs/log”, maxBytes=1024 * 1024 * 100, backupCount=10)
# 创建日志记录的格式 日志等级 输入日志信息的文件名 行数 日志信息
formatter = logging.Formatter(‘%(levelname)s %(filename)s:%(lineno)d %(message)s’)
# 为刚创建的日志记录器设置日志记录格式
file_log_handler.setFormatter(formatter)
# 为全局的日志工具对象(flask app 使用的)添加日志记录器
logging.getLogger().addHandler(file_log_handler)
分析代码:
basicConfig(): 对日志系统进行一次性配置, 以下是可以指定的关键字参数
filename:指定日志输出目标文件的文件名,指定该设置项后日志信心就不会被输出到控制台了
filemode:指定日志文件的打开模式,默认为 ’a’。需要注意的是,该选项要在 filename 指定时才有效
format:指定日志格式字符串,即指定日志输出时所包含的字段信息以及它们的顺序。logging 模块定义的格式字段下面会列出。
datefmt: 指定日期 / 时间格式。需要注意的是,该选项要在 format 中包含时间字段 %(asctime)s 时才有效
level:指定日志器的日志级别
stream:指定日志输出目标 stream,如 sys.stdout、sys.stderr 以及网络 stream。需要说明的是,stream 和 filename 不能同时提供,否则会引发 ValueError 异常
handlers:Python 3.3 中新添加的配置项。该选项如果被指定,它应该是一个创建了多个 Handler 的可迭代对象,这些 handler 将会被添加到 root logger。需要说明的是:filename、stream 和 handlers 这三个配置项只能有一个存在,不能同时出现 2 个或 3 个,否则会引发 ValueError 异常。

RotatingFileHandler(): 轮转文件处理器,将日志消息发送到磁盘文件,并支持日志文件按大小切割
FileHandler(): 将日志消息发送到磁盘文件,默认情况下文件大小会无限增长
StreamHandler(): 将日志消息发送到输出到 Stream,如 std.out, std.err 或任何 file-like 对象。

Formatter(): 格式器, 决定日志记录的最终输出格式
%(levelname)s:日志记录的级别
%(message)s:日志记录的内容
%(asctime)s:日志记录的时间
%(pathname)s:调用日志记录文件的全路径
%(filename)s:pathname 的文件名部分
%(module)s:pathname 的文件名,不包含后缀
%(funcName)s:调用日志记录文件的函数名
getLogger(): 创建一个 Logger 对象
addHandler(): 添加一个处理器

日志级别
以下是由低到高,默认设置等级后不显示低等级的消息

DEBUG
INFO
WARNING
ERROR
CRITICAL(很少使用)

参考文档:https://www.cnblogs.com/yyds/…

退出移动版