【问题标题】:python3: journal logging does not show log level?python3:日志记录不显示日志级别?
【发布时间】:2016-11-22 17:33:44
【问题描述】:

这是我正在使用的python。

$ python3 --version
Python 3.5.2

这是经过谷歌搜索后的测试代码 (How to log to journald (systemd) via Python?)。我正在尝试使用日志。

#!/usr/bin/python3

import logging
from systemd.journal import JournalHandler

log = logging.getLogger('test')
log.addHandler(JournalHandler())
log.setLevel(logging.DEBUG)
log.warning("warn")
log.info("info")
log.error("error")
log.debug("debug")

我希望在日志中看到如下内容:

WARNING: warn
INFO: info
ERROR: error
DEBUG: debug

但这就是实际显示的内容:

Nov 22 09:29:56 host1 ./test_log.py[8997]: warn
Nov 22 09:29:56 host1 ./test_log.py[8997]: info
Nov 22 09:29:56 host1 ./test_log.py[8997]: error
Nov 22 09:29:56 host1 ./test_log.py[8997]: debug

日志消息没有日志级别前缀。感谢您的帮助。

更多信息,

我也尝试格式化。

logging.basicConfig(format='%(levelname)s %(message)s')

然后在标准输出上,我可以看到日志级别,但仍然没有在日志中。

【问题讨论】:

    标签: python-3.x


    【解决方案1】:

    您的 basicConfig 语句将创建一个 StreamHandler,您在此处设置的格式仅适用于您在 stdout 上获得的日志。查看Formatter objects 的文档如果未指定 fmt,则使用“%(message)s”。。因此,您必须创建一个单独的 Formatter 并在 JournalHandler 上使用 setFormatter 来获得所需的输出。

    您的代码的基本修改如下:

    #!/usr/bin/env python
    
    import logging
    from systemd.journal import JournalHandler
    
    log = logging.getLogger('test')
    log_fmt = logging.Formatter("%(levelname)s %(message)s")
    log_ch = JournalHandler()
    log_ch.setFormatter(log_fmt)
    log.addHandler(log_ch)
    log.setLevel(logging.DEBUG)
    log.warning("warn")
    log.info("info")
    log.error("error")
    log.debug("debug")
    

    这会在日志中提供您想要的输出

    Nov 24 01:16:50 localhost.localdomain app.py[11279]: WARNING warn
    Nov 24 01:16:50 localhost.localdomain app.py[11279]: INFO info
    Nov 24 01:16:50 localhost.localdomain app.py[11279]: ERROR error
    Nov 24 01:16:50 localhost.localdomain app.py[11279]: DEBUG debug
    

    【讨论】:

    • JournalHandler 和 SysLogHandler 有什么区别? /dev/log -> /run/systemd/journal/dev-log
    • JournalHandler 将向本地 systemd 日志发送日志条目,而 SysLogHandler 将向远程(或本地)系统日志服务器发送日志条目。
    猜你喜欢
    • 1970-01-01
    • 2011-05-06
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-26
    相关资源
    最近更新 更多