use*_*997 7 python django logging uwsgi
我正在使用django + uwsgi进行网络项目.但是我发现uwsgi运行一段时间后会丢失一些django日志!
情况是:我用8进程配置uwsgi.当我启动uwsgi时,所有django日志都将写在单个日志文件中.但几个小时后,一些日志不会写入文件.我将django日志文件与uwsgi日志文件进行了比较.我发现只有一个uwsgi进程的请求是用django文件编写的.其他7个进程的django日志丢失了.当我重新启动uwsgi时,结果是一样的.
有谁知道这个?
谢谢,
我的django日志配置:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'simple': {
'format': '%(levelname)s %(asctime)s %(message)s'
},
'detail': {
'format': '%(levelname)s %(asctime)s [%(module)s.%(funcName)s line:%(lineno)d] %(message)s',
},
},
'handlers': {
'file': {
'level': 'INFO',
'formatter': 'simple',
'class': 'logging.handlers.TimedRotatingFileHandler',
'filename': LOG_FILE,
'when': 'midnight',
'backupCount': 366,
},
'err_file': {
'level': 'WARN',
'formatter': 'detail',
'class': 'logging.handlers.TimedRotatingFileHandler',
'filename': LOG_ERR_FILE,
'when': 'midnight',
'backupCount': 366,
},
},
'loggers': {
'django_request': {
'handlers': ['file', 'err_file'],
'level': 'DEBUG',
'propagate': True,
},
}
}
Run Code Online (Sandbox Code Playgroud)
我的uwsgi配置:
<uwsgi>
<socket>0.0.0.0:8888</socket>
<chdir>src_dir</chdir>
<pythonpath>..</pythonpath>
<module>wsgi</module>
<workers>4</workers>
<processes>8</processes>
<master>true</master>
<pidfile>uwsgi.pid</pidfile>
<enable-threads>true</enable-threads>
<logdate>true</logdate>
<daemonize>/log/uwsgi/uwsgi.log</daemonize>
</uwsgi>
Run Code Online (Sandbox Code Playgroud)
这是因为从多个工作人员写入同一个文件是不安全的。您应该将日志写入每个工作人员的不同文件,或者尝试使用 SysLogHandler
http://docs.python.org/library/logging.handlers.html
/etc/rsyslog.d/local-myapp.conf:
local0.* -/var/log/myapp/app.log
Run Code Online (Sandbox Code Playgroud)
设置.py:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
'user': {
'()': 'core.log.UserFilter',
}
},
'formatters': {
'verbose': {
'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(user)s %(message)s'
},
'simple': {
'format': '%(levelname)s %(asctime)s %(module)s %(user)s %(message)s'
},
},
'handlers': {
'mail_admins': {
'level': 'ERROR',
'class': 'django.utils.log.AdminEmailHandler',
'filters': ['user'],
},
'syslog':{
'level': 'INFO',
'class': 'logging.handlers.SysLogHandler',
'formatter': 'verbose',
'filters': ['user'],
'facility': 'local0',
'address': '/dev/log',
},
},
'loggers': {
'django.request': {
'handlers': ['mail_admins'],
'level': 'ERROR',
'propagate': True,
},
},
'root': {
'handlers': ['syslog'],
'level': 'INFO',
}
}
Run Code Online (Sandbox Code Playgroud)
您也可以尝试将日志消息写入控制台并让uwsgi自己写入日志。
| 归档时间: |
|
| 查看次数: |
1903 次 |
| 最近记录: |