简体   繁体   English

python日志记录打印空行消息以供打印

[英]python logging printing empty lines message for print

We are trying to introducing python logging in out existing python project.我们正在尝试引入 python登录现有的 python 项目。

As we already have lot more print statement in code, we decided to redirect all print logs to logging file using below statement.由于我们在代码中已经有更多的打印语句,我们决定使用以下语句将所有打印日志重定向到日志文件。

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

However, it printing two lines with second as empty logs.但是,它将第二行打印为空日志。

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 -

It is working for logging function like info, error .它适用于记录功能,如info, error it only giving issue for print .它只给出打印问题。

It would be great help if someone know cause of it.如果有人知道原因,那将是非常有帮助的。

In additional detail, we are using gunicorn as server and falcon as rest framework.更详细地说,我们使用gunicorn作为服务器,使用falcon作为休息框架。

You should not modify the write functions of stdout and stderr but add a stream handler for info and for error (one on stdout and the other one on stderr)您不应修改 stdout 和 stderr 的写入函数,而应为信息和错误添加一个流处理程序(一个在 stdout 上,另一个在 stderr 上)

You can find an example on SO here: https://stackoverflow.com/a/31459386/14306518您可以在此处找到关于 SO 的示例: https : //stackoverflow.com/a/31459386/14306518

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM