웹 프로젝트에 django + uWSGI를 사용하고 있습니다. 그러나 모든 로그가 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')
감사합니다. 문제가 해결되었습니다. –