【发布时间】: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