我在基本配置中设置了两个日志处理程序。 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
中指定它?
答案 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
:
将分配尚未设置格式器的任何处理程序 此函数中创建的默认格式化程序。