Pro*_*Pro 3 python python-logging
是否可以有多个日志处理程序在 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"
},
Run Code Online (Sandbox Code Playgroud)
日志记录.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"
},
}
}
Run Code Online (Sandbox Code Playgroud)
可以通过自己打开文件流并将其传递给流处理程序来实现这一点,如下所示:
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")
Run Code Online (Sandbox Code Playgroud)
该test.log文件将包含以下内容:
test log
test log
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2599 次 |
| 最近记录: |