【问题标题】:Different django processes same log不同的 django 处理相同的日志
【发布时间】:2016-10-03 19:35:48
【问题描述】:

这是一个关于日志的开放式问题,当您有不同的 django 进程时。如何在同一个日志文件中获取不同 django 进程的输出?您将如何处理这个问题?

现在到我当前的设置。我有一个在 webfaction 上运行的 django webapp。在 django 中,日志记录将转到控制台标准输出

'console': {
    'class': 'logging.StreamHandler',
    'formatter': 'simple',
},

httpd.conf 中配置为去

ErrorLog /home/elmartus/logs/user/error_myapp.log

然后我有一些从 cron 运行的作业,例如当前输出到控制台的 ./manage.py runjobs hourly

那么我怎样才能将 django 的正常输出和那些命令行进程的输出放到同一个文件中呢?知道如何使用 celery 任务和在单独的 django 进程上运行的任何其他任务来执行此操作也会很有趣。

谢谢!

【问题讨论】:

  • 最简单的不是登录到控制台,而是直接写入日志文件。
  • 写入同一个文件可能会混淆不同进程的输出,例如从另一个进程写入的行中间开始的行。连接来自各种进程的日志的一种常见方法是写入 FIFO,然后有一个记录器进程读取 FIFO 并附加到文件中。 FIFO 写入(不是太大,有一个由内核维护的缓冲区)是原子的,因此日志写入不会混合在一起。

标签: django celery webfaction django-extensions django-logging


【解决方案1】:

查看来自日志记录模块文档的example

您可以拥有一个名为“日志服务器”的进程,然后许多应用程序可以通过logging.handlers.SocketHandler向它写入

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-22
    • 2022-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-04
    • 1970-01-01
    相关资源
    最近更新 更多