Python sockethandler日志记录不适用于某些模块

时间:2014-04-19 22:58:09

标签: python logging config

我有一个奇怪的问题。我正在使用logging.config来设置我的记录器以使用sockethandler。一切正常,除了2/10 +模块似乎没有记录任何东西。很好,我的意思是我在我的日志服务器上看到除了两者之外的所有内容。这很奇怪,它适用于一些但不适用于其他人。我正在使用以下行初始化每个模块的记录器:

import logging
import logging.config

logging.config.fileConfig(config.main_log_conf)
logger = logging.getLogger("CAKE")

我认为问题可能是记录器名称冲突,因此上面的CAKE,但是没有用。

以下是我正在使用的配置文件。

[loggers]
keys=root

[handlers]
keys=socketHandler

[formatters]
keys=simpleFormatter

[logger_root]
handlers=socketHandler
level=DEBUG

[handler_socketHandler]
class=handlers.SocketHandler
level=DEBUG
formatter=simpleFormatter
args=('localhost', handlers.DEFAULT_TCP_LOGGING_PORT)

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

1 个答案:

答案 0 :(得分:0)

不要从每个模块调用fileConfig()。通常应该只调用一次来调用从if __name__ == '__main__'子句调用的程序(进程)中的日志记录配置。另请注意,您应该(通常)将disable_existing_loggers=False传递给fileConfig - 默认为True仅出于向后兼容性原因。有关详细信息,请参阅here