我有一个用于登录控制台的日志配置文件和一个具有不同格式和级别的文件。在我的python脚本中,我可以加载这个配置,基本上控制台和文件输出都是正常的。
我在配置文件中设置了文件名,如下所示。
是否可以在python脚本本身中设置该文件名?
python代码:
# set up logging
logging.config.fileConfig(loginipath)
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')
日志配置文件:
[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=
发布于 2013-11-27 21:11:39
如下所示更改您的handler_fileHandler
部分:
[handler_fileHandler]
class=FileHandler
level=DEBUG
formatter=fileFormatter
args=('%(logfilename)s',)
然后向fileConfig调用添加一个defaults
参数
logging.config.fileConfig(loginipath, defaults={'logfilename': '/var/log/mylog.log'})
发布于 2018-04-01 00:04:41
这两个处理程序对我都很有效:
(1)
logging.config.fileConfig( 'logging.ini' , disable_existing_loggers=False)
[handler_myhandler1]
class=FileHandler
level=DEBUG
formatter=form01
args=('python.log', 'w')
(2)
logging.config.fileConfig( 'logging.ini' , disable_existing_loggers=False, defaults={ 'logfilename' : getSomeName() } )
[handler_myhandler2]
class=FileHandler
level=DEBUG
formatter=form01
args=('%(logfilename)s','w')
在https://docs.python.org/2/library/logging.config.html上阅读了示例之后
发布于 2013-03-02 20:30:21
尝试在fileConfig()
之后调用logging.config.dictConfig()
并只设置文件名。
https://stackoverflow.com/questions/13649664
复制相似问题