【问题标题】:How to use logging with python's fileConfig and configure the logfile filename如何使用 python 的 fileConfig 进行日志记录并配置日志文件文件名
【发布时间】:2012-11-18 22:28:14
【问题描述】:

我有一个用于记录到控制台的日志记录配置文件和一个具有不同格式和级别的文件。在我的 python 脚本中,我可以加载这个配置,基本上控制台和文件输出都可以。

我在config文件中设置文件名如下图。

是否可以在 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=

【问题讨论】:

    标签: python file logging console


    【解决方案1】:

    像这样更改您的 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'})
    

    【讨论】:

    【解决方案2】:

    两个处理程序都为我工作:

    (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阅读示例后

    【讨论】:

      【解决方案3】:

      尝试在fileConfig() 之后调用logging.config.dictConfig() 并设置文件名。

      【讨论】:

      • 能否举个例子说明如何设置文件名。谢谢。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-03
      • 1970-01-01
      • 2013-01-02
      • 1970-01-01
      • 2021-11-06
      • 1970-01-01
      • 2010-09-13
      相关资源
      最近更新 更多