Python日志:可以在格式化器中添加模块名称吗

14 投票
3 回答
12663 浏览
提问于 2025-04-18 17:50

你可以通过模块名称来获取一个日志记录器,方法是这样的:

logging.getLogger(module_name)

我想在每条日志记录中添加 module_name。有没有办法设置一个 Formatter 对象来添加 module_name 呢?

3 个回答

1

logging.basicConfig 这个函数里,你可以设置日志的格式:

logging.basicConfig(format='%(name)s\t%(message)s')
4

当你初始化日志记录器的时候(这个操作只需要在应用程序中做一次),可以试试这个配置。

logging.basicConfig(
    filename='var/bpextract.log',
    level=logging.INFO,
    format='%(asctime)s  %(process)-7s %(module)-20s %(message)s',
    datefmt='%m/%d/%Y %H:%M:%S'
    )

...在你代码的后面部分...

log = logging.getLogger("bpextract")
log.info('###### Starting BPExtract App #####')
18

你在找 %(name)s 这个参数;把它加到你的格式化模式里:

FORMAT = "%(name)s: %(message)s"
logging.basicConfig(format=FORMAT)

或者在创建 Formatter() 的时候:

FORMAT = "%(name)s: %(message)s"
formatter = logging.Formatter(fmt=FORMAT)

可以查看这个 LogRecord 属性参考

属性名称name
格式%(name)s
描述: 用来记录调用的日志记录器的名称。

撰写回答