我正在使用yaml为我的Python应用程序配置日志记录。
version: 1
disable_existing_loggers: False
formatters:
standard:
format: "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
handlers:
console:
class: logging.StreamHandler
level: DEBUG
formatter: standard
stream: ext://sys.stdout
info_file_handler:
class: logging.handlers.RotatingFileHandler
level: INFO
formatter: standard
filename: info.log
maxBytes: 10485760 # 10MB
backupCount: 20
encoding: utf8
error_file_handler:
class: logging.handlers.RotatingFileHandler
level: ERROR
formatter: standard
filename: errors.log
maxBytes: 10485760 # 10MB
backupCount: 20
encoding: utf8
debug_file_handler:
class: logging.handlers.RotatingFileHandler
level: DEBUG
formatter: standard
filename: debug.log
maxBytes: 10485760 # 10MB
backupCount: 20
encoding: utf8
loggers:
db_ops:
level: DEBUG
handlers: [info_file_handler, error_file_handler, debug_file_handler]
propagate: true
在模块db_ops
中,我同时使用logger.info
和logger.debug
进行不同级别的日志记录。当我运行应用程序时,INFO
确实输出到info.log,INFO
和DEBUG
消息都输出到debug.log。
根据级别将日志分隔到不同文件的正确方法是什么?
答案 0 :(得分:3)
python记录器和处理程序的级别是阈值。如果您将级别指定为DEBUG,则表示将记录等于或高于DEBUG 的任何内容。
如果您只想进行DEBUG日志记录,则必须另外分配一个过滤器,该过滤器将过滤除DEBUG消息之外的任何内容。