首页 > 解决方案 > 向记录器添加特定名称

问题描述

我正在设置一个 python 记录器,但我在使用特定名称时遇到了问题,具体取决于它调用记录器的文件。

这是我要登录的文件: 2020-05-06 13:51:31,032 - myModule - WARNING - warn message

代替2020-05-06 13:51:31,032 - sLogger - WARNING - warn message

这就是我所拥有的

import logging, logging.config

# set up logging
logging.config.fileConfig("config.ini")
logger = logging.getLogger('sLogger')

# log something
logger.debug('debug message')
logger.info('info message')
logger.warn('warn message')
logger.error('error message')
logger.critical('critical message')

和我的config.ini

[loggers]
keys=root,sLogger

[handlers]
keys=consoleHandler,fileHandler

[formatters]
keys=fileFormatter,consoleFormatter

[logger_root]
level=DEBUG
handlers=consoleHandler

[logger_sLogger]
level=DEBUG
handlers=consoleHandler,fileHandler
qualname=sLogger
propagate=0

[handler_consoleHandler]
class=StreamHandler
level=WARNING
formatter=consoleFormatter
args=(sys.stdout,)

[handler_fileHandler]
class=FileHandler
level=DEBUG
formatter=fileFormatter
args=('logfile.log',)

[formatter_fileFormatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
datefmt=

[formatter_consoleFormatter]
format=%(levelname)s - %(message)s
datefmt=

我见过类似logger = logging.getLogger(__name__)的代码,但这样它不会调用slogger.

我怎么能同时拥有这两种东西?

标签: pythonlogging

解决方案


将格式中的名称替换为文件名。

format=%(asctime)s - %(filename)s - %(levelname)s - %(message)s

您可以使用python 以格式提供的 LogRecord对象的任何属性。


推荐阅读