【问题标题】:Why non-root logger is not writing any log to log file?为什么非 root 记录器没有将任何日志写入日志文件?
【发布时间】:2015-02-27 10:15:33
【问题描述】:

我想通过使用两个带有以下 .ini 配置文件的记录器来写入两个日志文件:

[loggers]
keys=root,teja

[handlers]
keys=fileHandler,tejaFileHandler

[formatters]
keys=simpleFormatter

[logger_teja]
level=DEBUG
handlers=tejaFileHandler
qualname='tejaLogger'


[logger_root]
level=DEBUG
handlers=fileHandler

[handler_fileHandler]
class=logging.FileHandler
level=DEBUG
formatter=simpleFormatter
args=("error.log", "a")

[handler_tejaFileHandler]
class=logging.FileHandler
level=DEBUG
formatter=simpleFormatter
args=("teja.log", "a")

[formatter_simpleFormatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s

我在我的python代码中使用这个配置

import logging
import logging.config
# load my module

import my_module

# load the logging configuration

logging.config.fileConfig('logging.ini')

logger1=logging.getLogger('root')
logger1.info('Hi how are you?')

logger2=logging.getLogger('teja')
logger2.debug('checking teja logger?')

我看到日志被写入 error.log 文件,而没有日志被写入 teja.log 文件。如果我在做一些愚蠢的事情,请纠正我......

【问题讨论】:

  • 请你试试logger2.error。如果它写信给teja.log,那么可能存在级别问题。
  • @Lafada:日志级别是正确的。

标签: python file logging handlers


【解决方案1】:

您将记录器对象命名为'tejaLogger'

[logger_teja]
level=DEBUG
handlers=tejaFileHandler
qualname='tejaLogger'
#        ^^^^^^^^^^^^

请注意,引号是名称的一部分

但您的测试代码改为使用teja

logger2=logging.getLogger('teja')

重命名一个或另一个;虽然你可以使用logging.getLogger("'tejaLogger'") 您可能想要删除引号和/或将记录器重命名为您期望的名称:

[logger_teja]
level=DEBUG
handlers=tejaFileHandler
qualname=teja

【讨论】:

  • 是的,有趣的是,记录器通过记录被称为'tejaLogger'。我会认为.inis 更聪明,但没有......
  • @matsjoyce:ini 文件需要 qualname 字段来命名记录器,但格式不需要引用(单引号被视为值的一部分)
【解决方案2】:

原来问题出在这一行(在[logger_teja]部分):

qualname='tejaLogger'

如果您将其添加到您的代码中(它会打印所有当前的记录器):

print(logging.Logger.manager.loggerDict)

你得到:

{"'tejaLogger'": <logging.Logger object at 0x7f89631170b8>}

这意味着您的记录器的字面意思是'tejaLogger'。使用:

logger2=logging.getLogger("'tejaLogger'")`

实际上工作正常。要么这样做,要么将qualname='tejaLogger' 更改为qualname=teja

【讨论】:

    猜你喜欢
    • 2020-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-29
    • 2017-11-09
    • 2019-07-16
    • 2014-12-24
    • 1970-01-01
    相关资源
    最近更新 更多