gpt4 book ai didi

python - 为什么所有的应用日志都写到uwsgi log?

转载 作者:太空狗 更新时间:2023-10-30 02:49:22 25 4
gpt4 key购买 nike

我正在为一个网络项目使用 dJango+uWSGI。但是我发现我所有的日志都会写到uwsgi日志中!!

情况是:当我使用 logger.xxx 写入日志条目时,我在 settings.py 中配置的记录器将接收日志条目,但 uwsgi.log 也会将日志写入该文件!最奇怪的是,在我的一些项目中,我的应用程序日志将按照我的配置写入日志文件,所有守护进程日志都写入uwsgi.log;但其他项目的应用程序日志也将写入 uwsgi.log!

这是我的日志配置:

LOGGING = {
'version': 1,
'disable_existing_loggers': True,
'formatters': {
'verbose': {
'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
},
'detail': {
'format': '%(asctime)s %(levelname)s %(module)s %(message)s'
},
'message_only': {
'format': '%(asctime)s %(message)s'
},
'simple': {
'format': '%(levelname)s %(asctime)s %(message)s'
},
},
'handlers': {
'mail_admins': {
'level': 'ERROR',
'class': 'django.utils.log.AdminEmailHandler'
},
'file':{
'level':'DEBUG',
'class':'logging.handlers.TimedRotatingFileHandler',
'formatter': 'simple',
'filename': os.path.join(LOG_BASE, 'web.log'),
'when': 'D',
'backupCount' : 3
},
'pref':{
'level':'DEBUG',
'class':'logging.handlers.RotatingFileHandler',
'formatter': 'message_only',
'filename': os.path.join(LOG_BASE, 'pref.log'),
'maxBytes': 10 * 1024 * 1024, # 10MB
'backupCount' : 5
},
'err':{
'level':'ERROR',
'class':'logging.handlers.TimedRotatingFileHandler',
'formatter': 'detail',
'filename': os.path.join(LOG_BASE, 'err.log'),
'when': 'D',
'backupCount' : 3
},
},
'loggers': {
'django.request': {
'handlers': ['mail_admins'],
'level': 'ERROR',
'propagate': True,
},
'myproject' : {
'handlers': ['file', 'err' ],
'level': 'INFO',
},
'myproject+prefs' : {
'handlers': ['pref'],
'level': 'DEBUG',
}
}
}

还有我的 uwsgi.xml:

<uwsgi>
<socket>:8888</socket>
<env>DJANGO_SETTINGS_MODULE=myproject.settings</env>
<module>django.core.handlers.wsgi:WSGIHandler()</module>
<processes>4</processes>
<master />
<master-as-root />
<!-- request timeout -->
<harakiri>15</harakiri>
<post-buffering>32768</post-buffering>
<daemonize>/var/log/myproject/uwsgi.log</daemonize>
<listen>32768</listen>
<socket-timeout>4</socket-timeout>
<disable-logging />
</uwsgi>

下面是我如何使用日志记录:

import logging
from time import time

logger = logging.getLogger('myproject')


logger.info('my log')

最佳答案

你只需混合使用 Django 日志系统和 uWSGI。

'formatters': {
'simple': {
'format': '%(levelname)s | %(message)s'
},
...
},
'handlers': {
'console':{
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'simple'
},
...
},
'loggers': {
'django.request': {
'handlers': ['console', ],
'level': 'DEBUG',
'propagate': True,
},
},

这添加了将所有请求记录到控制台并且该日志处理 uWSGI。

'class': 'logging.StreamHandler',这是将日志保存到 uWSGI 日志的关键。

你的 Django 日志保存到 'filename': os.path.join(LOG_BASE, 'err.log'),

关于python - 为什么所有的应用日志都写到uwsgi log?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8487791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com