全局更改记录器模块中的日志文件名

2024-06-09 02:59:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我将logger模块与dictConfig(带有一个yaml文件)一起用于我的应用程序日志记录。但是,我想通过添加一个日期前缀(例如:logpath:/foo/bar/file_20150523.log)来全局更改日志文件名。在

所以每次启动应用程序时,都会创建一个新的日志文件。在

是否可以在yaml文件中以另一种方式执行此操作,还是需要在应用程序中修改处理程序?在

塔克斯


Tags: 模块文件log应用程序yamlfoo文件名方式
1条回答
网友
1楼 · 发布于 2024-06-09 02:59:00

想法很简单:

  1. 从YAML文件读取配置
  2. 找到日志文件的名称
  3. 将日期戳附加到名称部分(而不是扩展部分)
  4. 调用logging.config.dictConfig并传入修改后的配置字典

下面是我在这个例子中使用的YAML文件,daily\u log_文件.yaml

version: 1
loggers:
    default_logger:
        handlers: [consoleHandler, fileHandler]
        level: DEBUG
handlers:
    consoleHandler:
        class: logging.StreamHandler
        level: DEBUG
        formatter: brief
    fileHandler:
        class: logging.FileHandler
        formatter: brief
        filename: '/tmp/daily_log_file.log'
        level: DEBUG
formatters:
    brief:
        format: '%(levelname)8s %(message)s'

以下是脚本,每日日志_文件.py

^{pr2}$

讨论

  • yaml_config是操作所在。我首先从YAML文件加载配置字典,然后修补文件名
  • 为了修补文件名,我将基本文件名和扩展名分开
  • 然后我得到今天的日期并将时间戳附加到文件名,然后将结果分配回配置字典
  • 最后,我打电话给dictConfig来完成这项工作

相关问题 更多 >