我有一个python日志配置文件,其文件处理程序如下所示。
[handler_filelog]
class: FileHandler
args = ('/var/tmp/log/client.log','a')
相反,我需要下面的表单(动态生成的路径)。
[handler_filelog]
class: FileHandler
args = ('/var/tmp/log_<unique_string>/client.log','a')
程序的多个实例可能正在运行,因此将使用不冲突的日志路径和文件。 在程序执行结束之前,记录器一次安装不需要更改。
有没有办法使用配置文件方法来处理这个问题? 我不喜欢自己创建loggers/handlers/formatters,因为我的日志配置文件有很多这样的文件,而基于配置文件的方法更好。
(更新:我正在使用Python2.4)
这是你需要的。您应该首先扩展FileHandler类。把它放在一个文件中,比如配置文件目录中的myHandler.py:
然后在配置文件中,可以像这样使用这个自定义文件处理程序
我在我的机器上测试过这个
如果您使用的是Python2.7或3.2,那么可以使用dictionary-based configuration,这允许您指定返回处理程序的任意可调用项,例如,可以使用进程PID来构造文件名。
更新:如果您使用的是2.4,那么可以使用logutils包,该包应该与Python 2.4一起使用(除了LoggerAdapter类,它需要2.5或更高版本)。
logutils
包包含基于字典的配置功能。“CallbackFilter”可用于在python的记录器配置文件中实现动态文件路径和文件名。您可以定义写动态日志如下:
然后在配置文件中,可以使用如下过滤器:
信息或以上日志将输出到static.log和dynamic_log。
我在django项目中测试了它,在这个项目中,我在settings.py中编写了config。它工作得很好。日志记录将如下:
相关问题 更多 >
编程相关推荐