uwsgi.log中的信息输出为标准输出流,因此若在django中logger指向了console输出则会输出到uwsgi.log中;
若配置了多个handler则存在日志重复记录的问题,浪费磁盘空间,影响程序执行效率;
如配置了logger
'': {
'handlers': ['default','console'],
'level':LOG_LEVEL,
'propagate': False
},
default对应的handler设置为
'default': {
'level':LOG_LEVEL,
'class':'logging.handlers.TimedRotatingFileHandler',
'filename': os.path.join(PROJ_PAR_ROOT+'/log/',('%s.log' % APP_NAME)),
'when':'MIDNIGHT',
'backupCount': 7,
'encoding': 'utf8',
'interval' : 1,
'formatter':'standard'
},
则会在${APP_NAME}.log与uwsgi.log中均输出日志信息;
可以将console去除掉,但是这样在开发环境下就不能很直观的从控制台看到日志输出,特别是windows下,因此在不同环境下需要不同的日志设置
因此可以将logger中的handler变量化设置如下:
'': {
'handlers': DEFAULT_LOG_HANDLERS,
'level':LOG_LEVEL,
'propagate': False
},
这样在不同的环境配置文件中定义期望的DEFAULT_LOG_HANDLERS即可;
日常与线上环境设置为
DEFAULT_LOG_HANDLERS=['default']
开发环境设置为
DEFAULT_LOG_HANDLERS=['default','console']
不同环境设定不同配置文件的方式,参见另外一篇文章;