【发布时间】:2015-12-10 10:26:55
【问题描述】:
我的 nginx+uwsgi+django 站点出现问题。 我知道 django+uwsgi 没什么特别的,应该是日志模块本身的东西。
在我的站点中,我使用 RotatingFileHandler 记录特殊条目,但是,当 uwsgi 与多个工作处理器一起运行时,今天我发现, 多个日志文件同时更改。比如这里是文件sn-p:
[root@speed logs]# ls -lth
total 18M
-rw-rw-rw- 1 root root 2.1M Sep 14 19:44 backend.log.7
-rw-rw-rw- 1 root root 1.3M Sep 14 19:43 backend.log.6
-rw-rw-rw- 1 root root 738K Sep 14 19:43 backend.log.3
-rw-rw-rw- 1 root root 554K Sep 14 19:43 backend.log.1
-rw-rw-rw- 1 root root 1013K Sep 14 19:42 backend.log.4
-rw-rw-rw- 1 root root 837K Sep 14 19:41 backend.log.5
-rw-rw-rw- 1 root root 650K Sep 14 19:40 backend.log.2
-rw-rw-rw- 1 root root 656K Sep 14 19:40 backend.log
-rw-r--r-- 1 root root 10M Sep 13 10:11 backend.log.8
-rw-r--r-- 1 root root 0 Aug 21 15:53 general.log
[root@speed-app logs]#
实际上,我将旋转文件设置为 10M perfile 和最多 10 个文件。
我google了很多,很多人都打过这个,好像日志模块本身不支持这个。
我发现有人提到了 ConcurrentLogHandler(https://pypi.python.org/pypi/ConcurrentLogHandler/0.9.1)。 有人用过这个人吗?我看是基于文件锁的,不知道这家伙性能好不好。
或者任何人有更好的想法将多个 uwsig 实例记录到同一个旋转文件?
谢谢。 卫斯理
【问题讨论】:
-
我的提议使用
logger server on localhost并发送每个日志请求。 -
这与 sysloghandler 的工作方式相同,嗯?
-
Syslog 是我最常用的;即使不使用“高级”服务器(例如 rsyslog),您也可以set it up quickly with logrotate。 python docs 中还推荐了一种使用队列的方法(example | packaged)
-
顺便提一下,uWSGI documentation on logging 解释了它们的实现并给出了例子。
标签: python django logging uwsgi