Python日志记录.conf重新加载配置

2024-10-01 17:31:56 发布

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

在我的python代码中,我从一个文件中读取日志配置,在该文件中,我将希望的格式放入代码中。
当我尝试在运行时重新加载配置时,我在格式化程序中放入的一些额外的env集似乎丢失了,我有以下错误。你知道吗

Traceback (most recent call last):
  File "/usr/lib64/python2.7/logging/__init__.py", line 861, in emit
    msg = self.format(record)
  File "/usr/lib64/python2.7/logging/__init__.py", line 734, in format
    return fmt.format(record)
  File "/usr/lib64/python2.7/logging/__init__.py", line 469, in format
    s = self._fmt % record.__dict__
KeyError: 'hostname'
Logged from file conn.py, line 304

注意到我的日志记录.conf具体如下:

[formatter_simpleFormatter]
format=[%(levelname)s] %(asctime)s [ThId-%(threadName)-10s] [%(filename)s:%(funcName)s:%(lineno)s] [%(hostname)s] %(message)s
datefmt=%m/%d/%Y %I:%M:%S %p

其中,主机名通过以下方式在代码中设置:

class HostnameFilter(logging.Filter):
    hostname = platform.node()

    def filter(self, record):
        record.hostname = HostnameFilter.hostname
        return True

## Log Logger.
class Logger:
    """!@brief
    Logger wrapper
    """
    def __init__(self):
        self.log = logging.getLogger("MYCONF")
        self.log.addFilter(HostnameFilter())

奇怪的是,错误似乎出现在课堂上(康涅狄格州)不是我的,也许这是我正在使用的一些库的代码,它们也在记录。你知道吗

这就是流程吗?我能做点别的吗?你知道吗


Tags: 代码inpyselfformatinitusrlogging
1条回答
网友
1楼 · 发布于 2024-10-01 17:31:56

由于格式化发生在处理程序中,并且记录到记录器的事件被传递到该记录器的处理程序以及记录器层次结构的更高层次的处理程序,因此您需要确保hostname属性始终添加到记录中—如果使用不同的记录器记录消息,则情况可能并非如此。尝试将筛选器附加到相关的处理程序而不是记录器。你知道吗

相关问题 更多 >

    热门问题