Python的默认日志格式化程序是什么?

2024-05-16 10:32:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试破译日志中包含的信息(日志设置使用默认格式化程序)。documentation声明:

Do formatting for a record - if a formatter is set, use it. Otherwise, use the default formatter for the module.

但是,我找不到任何实际说明此默认格式的引用。


Tags: the程序信息声明forifisuse
3条回答

默认值似乎是%(levelname)s:%(name)s:%(message)s

import logging
logging.error("Some error")
print "fmt: " , logging.root.handlers[0].formatter._fmt
# ERROR:root:Some error
# fmt:  %(levelname)s:%(name)s:%(message)s

默认格式位于here,即:

BASIC_FORMAT = "%(levelname)s:%(name)s:%(message)s"  

Format代码将告诉您如何自定义它。下面是一个关于如何自定义它的示例。

import sys
import logging

logging.basicConfig(
    level=logging.DEBUG,
    format="[%(asctime)s] %(levelname)s [%(name)s.%(funcName)s:%(lineno)d] %(message)s",
    datefmt="%H:%M:%S",
    stream=sys.stdout)

logging.info("HEY")

结果是:

[26/May/2013 06:41:40] INFO [root.<module>:1] HEY
import logging
print(logging.BASIC_FORMAT)

旧的线程,但这首先出现在我的google搜索结果的查询“python日志默认格式”,所以我想我应该添加我的答案。

还有一些评论问到,一个人怎么可能自己发现这一点。这是一件很自然的事情:

import logging
print(dir(logging))

基本的_格式在那里,事实上它是我的案例中结果的第一个条目。

相关问题 更多 >