Unk*_*own 2 python logging config
我想使用一个配置文件来创建两个记录器,它们将记录两个不同的文件。我的配置文件看起来像:
[loggers]
keys=root,main,zipper
[handlers]
keys=main,zip
[formatters]
keys=fmt
[logger_root]
level=DEBUG
handlers=main
[logger_main]
level=DEBUG
handlers=main
qualname=MAIN
[logger_zipper]
level=DEBUG
qualname=UPLOAD
handlers=zip
[handler_zip]
class=FileHandler
level=DEBUG
formatter=fmt
args=('zipper.log','a+')
[handler_main]
class=FileHandler
level=DEBUG
formatter=fmt
args=('main.log','a+')
[formatter_fmt]
format=%(asctime)s - %(levelname)s - %(name)s - %(message)s
Run Code Online (Sandbox Code Playgroud)
我尝试像这样使用这个配置文件:
import logging
import logging.config
logging.config.fileConfig("logging.conf")
# Logs to the first file
log = logging.getLogger("")
log.debug("unspec - debug")
log.error("unspec - error")
# Logs to the first file
log_r = logging.getLogger("main")
log_r.debug("main - debug")
log_r.error("main - error")
# Also logs to the first file :(
log_z = logging.getLogger("zipper")
log_z.debug("zipper - debug")
log_z.error("zipper - error")
Run Code Online (Sandbox Code Playgroud)
出于某种原因,我不明白,所有日志消息都转到第一个文件,而我希望将最后两个消息写入“zipper.log”。我错过了什么?
问题是配置文件中使用的限定名:
[logger_zipper]
level=DEBUG
qualname=UPLOAD
handlers=zip
Run Code Online (Sandbox Code Playgroud)
与代码中使用的不匹配:
log_z = logging.getLogger("zipper")
Run Code Online (Sandbox Code Playgroud)
使用以下任何组合:
qualname=zipper 和 logging.getLogger("zipper")qualname=UPLOAD 和 logging.getLogger("UPLOAD")| 归档时间: |
|
| 查看次数: |
5597 次 |
| 最近记录: |