我的服务器日志代码中有一个奇怪的错误。我试图有两个不同的日志文件。一个用于错误和警告(ERROR\u LOG),另一个用于服务器通过调用“INFO”(STUDENT\u INTERACTION\u LOG)生成的日志数据。开发实例和生产实例之间的日志记录行为略有不同,但仅限于STUDENT\u INTERACTION\u LOG是timedrotingfilehandler而不是RotatingFileHandler。第三个记录器(FeedbackHandler)负责一些调试工作,基本上与此无关。你知道吗
以下代码用于设置日志记录:
LOGGING = {
'version': 1,
'handlers': {
'console':{
'class':'logging.StreamHandler',
'formatter':'basicFormatter'
},
'errorHandler': {
'class': 'logging.handlers.RotatingFileHandler',
'filename': ERROR_LOG,
'formatter': 'basicFormatter'
}
},
'loggers': {
'Feedbackfull': {
'level': 'INFO',
'handlers': ['FeedbackHandler']
},
'SystemLogger': {
'level': 'WARNING',
'handlers': ['console']
},
'StudentInteractions': {
'level': 'INFO',
'handlers': ['fileHandler']
}
},
'root': {
'level': 'WARNING',
'handlers': ['console', 'errorHandler']
},
'formatters': {
'basicFormatter': {
'format': '%(name)s[%(levelname)s] - %(message)s'
},
'simpleFormatter': {
'format': '%(message)s'
}
}
}
LOG_FILENAME = os.path.join(app.config['ROOT_DIRECTORY'], 'log/feedbackfull/feedbackfull.log')
if app.config['IS_PRODUCTION']:
LOGGING['handlers']['fileHandler'] = {
'class': 'logging.handlers.TimedRotatingFileHandler',
'filename': STUDENT_INTERACTION_LOG,
'when': 'D',
'formatter': 'simpleFormatter'
}
else:
LOGGING['handlers']['fileHandler'] = {
'class': 'logging.handlers.RotatingFileHandler',
'filename': STUDENT_INTERACTION_LOG,
'formatter': 'simpleFormatter'
}
LOGGING
LOGGING['handlers']['FeedbackHandler'] = {
'filename': LOG_FILENAME,
'formatter': 'simpleFormatter',
'class': 'logging.handlers.RotatingFileHandler'
}
logging.config.dictConfig(LOGGING)
稍后在不同的模块中,我将使用以下内容:
student_interactions_logger = logging.getLogger('StudentInteractions')
student_interactions_logger.info("Data will go here.")
在回顾我的日志时,我很惊讶有些(但不是全部?)信息级别的日志有时会转到错误日志。我没有找到一个一致的原因。有人知道吗?快把我逼疯了。你知道吗
问题似乎是由于处理程序的级别不正确造成的。在将“console”和“errorHandler”的“level”设置为“WARNING”之后,日志记录似乎是正确的。你知道吗
相关问题 更多 >
编程相关推荐