禁用某些消息的格式

mbi*_*yle 5 python logging sh

我正在使用 python 日志库开发数据分析管道。我正在记录有关正在运行的步骤的自定义消息以及所调用程序的原始输出。我用来sh.py简化 shell 命令的调用。它让我定义一个回调函数来处理STDOUT/STDERR.

我希望能够定义我的回调函数,将每一行记录到日志文件中,而不需要格式化(这些程序输出很多行):

log.info("Starting %s run on %s", program_name, file_name)

def call_back(line):
    log.info.NOFORMAT(line)  # do the no format logging

sh.program(args, _out=call_back)

log.info("Finished running %s", program_name)
Run Code Online (Sandbox Code Playgroud)

我生成的日志文件将如下所示:

"""<br>
2016-01-22|{INFO}: Starting $SOME_PROGRAM$ on $SOME_FILE$<br>
program_output_line<br>
program_output_line<br>
program_output_line<br>
program_output_line<br>
program_output_line<br>
2016-01-22|{INFO}: Finished running $SOME_PROGRAM$<br>
"""
Run Code Online (Sandbox Code Playgroud)

有谁知道我怎样才能做到这一点?

shm*_*mee 1

您可以查看logging.config https://docs.python.org/2/library/logging.config.html

基本上,您将定义一个专用记录器,该记录器写入与根记录器相同的文件,但使用精简的格式化程序,例如format=%(message)s. 在 call_back 中,您将显式获取该记录器logging.getlogger(logger_name)