基于某些条件的python日志记录

时间:2017-07-11 06:54:31

标签: python

我正在使用python日志记录模块来完成我的应用程序中的大量日志记录。当我使用不同的处理程序登录stdoutfile时,它工作正常。我的用例是: 在生产部署日志的本地测试日志到标准输出到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)

1 个答案:

答案 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)