【问题标题】:Custom formats set in logging.basicConfig for StreamHandler在 logging.basicConfig 中为 StreamHandler 设置的自定义格式
【发布时间】:2018-10-09 01:42:32
【问题描述】:

我在基本配置中设置了两个日志处理程序。 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 中指定这个?

【问题讨论】:

    标签: python-3.x logging


    【解决方案1】:

    在将StreamHandler 传递给basicConfig 之前,预定义StreamHandler 并设置所需的自定义格式:

    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

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

    【讨论】:

    • 完美,正是我想要的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    • 2012-09-28
    • 2023-03-26
    • 2016-11-06
    • 1970-01-01
    相关资源
    最近更新 更多