在logging.basicConfig中为StreamHandler设置的自定义格式

时间:2018-10-09 01:42:32

标签: python-3.x logging

我在基本配置中设置了两个日志处理程序。 FileHandler记录到文件,StreamHandler记录到标准输出。

logging.basicConfig(
    format="%(asctime)s [%(threadName)-12.12s] [%(levelname)-5.5s]  %(message)s",
    level=logging.INFO,
    handlers=[
        logging.FileHandler("/my/log/file.log"),
        logging.StreamHandler(sys.stdout)
    ]
)

当前,以上代码可以正常工作,但是,我希望我的StreamHandler输出不同的格式,只是%(message)

是否可以在我的logging.basicConfig中指定它?

1 个答案:

答案 0 :(得分:2)

预定义StreamHandler并设置所需的自定义格式,然后再将其传递给basicConfig

handler_sh = logging.StreamHandler(sys.stdout)
handler_sh.setFormatter(logging.Formatter("%(message)s"))

您现在可以使用已设置好的格式化程序将创建的handler传递给basicConfig

logging.basicConfig(
    format="%(asctime)s [%(threadName)-12.12s] [%(levelname)-5.5s]  %(message)s",
    level=logging.INFO,
    handlers=[
        logging.FileHandler("/my/log/file.log"),
        handler_sh
    ]
)

只有FileHandler接受format中传递的basicConfig

  

将分配尚未设置格式器的任何处理程序   此函数中创建的默认格式化程序。