如何在twisted中打开某些文件的新日志文件

时间:2013-12-12 19:56:12

标签: python django logging twisted

我正在运行一个包含许多不同服务的python twisted应用程序,该应用程序的日志文件非常拥挤,各种输出。因此,为了更好地了解某个特定服务的内容,我想将该服务的消息仅记录到不同的日志文件中。但我无法弄清楚如何做到这一点。

对于我的应用程序,我使用的是一个调用twistd的shell脚本run.sh,如下所示:

twistd --logfile /var/log/whatever/path/mylogfile.log -y myapplication.py

文件myapplication.py启动应用程序中的所有服务,其中一个是我感兴趣的服务。该服务的所有代码都在文件myservice.py中。

那么,有没有办法为我的服务指定一个新的日志文件?当我在myservice.py中使用一些python代码启动服务时,我是否在myapplication.py中执行此操作?

3 个答案:

答案 0 :(得分:3)

看过使用多个日志文件的系统后,我强烈建议你不要朝着这个方向前进。

盖伊的回答听起来更像是朝着正确的方向发展。但是,要详细了解,请考虑使用结构化日志格式,例如structlog提供的格式(包括Twisted集成)。

一旦您的日志文件中的条目结构化,您将有机会构建与其一起使用的工具。 Guy给出的示例使用grep来查找与您关注的服务相关的事件,这是朝着这个方向迈出的一步。如果你朝这个方向走得更远,并说每个日志事件都是(例如)一个json编码的对象,那么你可以解析每一行并将任意复杂的过滤逻辑应用于生成的对象

答案 1 :(得分:0)

考虑以下两个选项:

  • 在查看/拖尾日志时依赖于日志行格式,例如:

tail -f mylogfile.log | grep <something unique like your service name?>

答案 2 :(得分:0)

您似乎可以为每项服务创建t.p.l.LogPublisher并为其附加FileLogObserver以便实际写入文件