Python在两个地方结束了日志记录

2024-09-30 04:33:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我的服务器日志代码中有一个奇怪的错误。我试图有两个不同的日志文件。一个用于错误和警告(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.")

在回顾我的日志时,我很惊讶有些(但不是全部?)信息级别的日志有时会转到错误日志。我没有找到一个一致的原因。有人知道吗?快把我逼疯了。你知道吗


Tags: infologformatterlogginghandlers错误filenamelevel

热门问题