在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"
},
}
}
答案 0 :(得分:2)
可以通过自己打开文件流并将其传递给流处理程序来实现,如下所示:
import logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)
stream = open("test.log", "a")
handler_1 = logging.StreamHandler(stream)
logger.addHandler(handler_1)
handler_2 = logging.StreamHandler(stream)
logger.addHandler(handler_2)
logger.info("test log")
test.log
文件将包含以下内容:
test log
test log