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

hon*_*ute 4 logging python-3.x

我在基本配置中设置了两个日志处理程序。记录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)
    ]
)
Run Code Online (Sandbox Code Playgroud)

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

有没有办法在 my 中指定这一点logging.basicConfig

Mos*_*oye 6

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

\n\n
handler_sh = logging.StreamHandler(sys.stdout)\nhandler_sh.setFormatter(logging.Formatter("%(message)s"))\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

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

FileHandler接受format传入的basicConfig

\n\n
\n

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

\n
\n