【发布时间】:2020-03-27 22:05:53
【问题描述】:
在 python 日志配置中是否可以有多个日志处理程序引用同一个日志文件。我可以通过将一个处理程序 handler_two 添加到 handlers 对象来使其工作,但这似乎是一个样板。
"handler_two": {
"level": "DEBUG",
"class": "logging.handlers.TimedRotatingFileHandler",
"formatter": "verbose",
"filename": "{}/abc.log".format(log_folder),
"when": "midnight",
"backupCount": 10,
"encoding": "utf8"
},
logging.conf -
"version": 1,
"disable_existing_loggers": False,
"formatters": {
"verbose": {
"format": "%(asctime)s %(name)s %(levelname)s (PID: %(process)d) %(message)s",
"datefmt": "%d/%m/%Y %I:%M:%S %p %Z"
},
"simple": {
"format": "%(asctime)s %(name)s %(levelname)s > %(message)s"
}
},
"handlers": {
"handler_one": {
"level": "DEBUG",
"class": "logging.handlers.TimedRotatingFileHandler",
"formatter": "verbose",
"filename": "{}/abc.log".format(log_folder),
"when": "midnight",
"backupCount": 10,
"encoding": "utf8"
},
"error": {
"level": "ERROR",
"class": "logging.handlers.TimedRotatingFileHandler",
"formatter": "verbose",
"filename": "{}/error.log".format(log_folder),
"when": "midnight",
"backupCount": 10,
"encoding": "utf8"
}
},
"root": {
"level": "ERROR",
"handlers": [
"error"
]
},
"loggers": {
"handler_one": {
"level": "DEBUG",
"handlers": [
"handler_one"
],
"propagate": "false"
},
}
}
【问题讨论】:
-
现在您有 2 个处理程序来处理 2 个不同的日志文件。你想达到什么目的?
-
@AdrianKrupa 我想要多个处理程序写入同一个文件。忽略错误处理程序。正如我所提到的,我可以通过复制
handler_one并将名称更改为handler_two来实现这一点。但是会有很多模块,我们希望将每个模块记录到一个文件中,但同时我们需要一个标识符来区分。 __ 名称 __ 作为记录器名称我不能使用,因为它不符合公司的编码准则。
标签: python python-logging