我们正在尝试引入 python登录现有的 python 项目。
由于我们在代码中已经有更多的打印语句,我们决定使用以下语句将所有打印日志重定向到日志文件。
import logging, sys
import os
from logging.handlers import TimedRotatingFileHandler
formatter = logging.Formatter("%(asctime)s - %(pathname)s - %(funcName)s - %(levelname)s - %(message)s")
log_path = '/logs/server.log'
handler = TimedRotatingFileHandler(filename=log_path, when='midnight')
handler.setFormatter(formatter)
log = logging.getLogger()
log.setLevel(logging.DEBUG)
log.addHandler(handler)
sys.stderr.write = log.error
sys.stdout.write = log.info
但是,它打印两行,第二行作为空日志。
2020-09-21 09:03:05,978 - utils.py - logger - INFO - <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>
2020-09-21 09:03:05,978 - utils.py - logger - INFO -
2020-09-21 09:03:05,978 - utils.py - logger - INFO - 1600693385 Mon Sep 21 09:03:05 2020 19882 Registering functions
2020-09-21 09:03:05,978 - utils.py - logger - INFO -
它适用于记录功能,例如info, error。它只给出打印问题。
如果有人知道它的原因,那将是很大的帮助。
更详细地说,我们使用gunicorn作为服务器,使用falcon作为休息框架。