我正在使用python日志记录模块来完成我的应用程序中的大量日志记录。当我使用不同的处理程序登录stdout
和file
时,它工作正常。我的用例是:
在生产部署日志的本地测试日志到标准输出到stdout的文件。
所以我正在寻找一些基于条件的日志(例如;基于某些环境变量值),如果它的本地日志以stdout为其他文件。
这是我如何使用两个处理程序:
logger = logging.getLogger("logging")
formatter = logging.Formatter('%(asctime)s | %(name)s | %(levelname)s: %(message)s')
logger.setLevel(logging.DEBUG)
stream_handler = logging.StreamHandler()
stream_handler.setLevel(logging.INFO)
stream_handler.setFormatter(formatter)
logFilePath = "my.log"
file_handler = logging.handlers.TimedRotatingFileHandler(filename = logFilePath, when = 'midnight', backupCount = 30)
file_handler.setFormatter(formatter)
file_handler.setLevel(logging.DEBUG)
logger.addHandler(file_handler)
logger.addHandler(stream_handler)
答案 0 :(得分:2)
我要在初始提交中添加一些代码:
import os
logger = logging.getLogger("logging")
formatter = logging.Formatter('%(asctime)s | %(name)s | %(levelname)s: %(message)s')
logger.setLevel(logging.DEBUG)
if os.getenv("ENV_VAR_YOU_WANT"):
handler = logging.StreamHandler()
handler.setLevel(logging.INFO)
handler.setFormatter(formatter)
else:
logFilePath = "my.log"
handler = logging.handlers.TimedRotatingFileHandler(filename = logFilePath, when = 'midnight', backupCount = 30)
handler.setFormatter(formatter)
handler.setLevel(logging.DEBUG)
logger.addHandler(handler)