[英]python logging based on some condition
i am using python logging module to perfrom lots of logging in my application. 我正在使用python日志记录模块在我的应用程序中执行大量日志记录。 it works fine when i use different handlers to log to stdout
and file
. 当我使用其他处理程序登录到stdout
和file
时,它工作正常。 my usecase is: on local testing log to stdout while on production deployment log to file insted of stdout. 我的用例是:将本地测试日志记录到标准输出,而将生产部署日志记录到标准输出的文件。
so i was lokking for some condition based log (ex; based on some environment variable value) if its local log to stdout otherwise file. 所以我在找一些基于条件的日志(例如,基于某些环境变量值),如果它的本地日志到stdout则另存为文件。
here is how i can achieve using two handlers: 这是我可以使用两个处理程序实现的方法:
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)
I'm going to add some code to my initial commment: 我将在初始注释中添加一些代码:
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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.