2011-06-14 151 views
3

我有一个关于python标准日志记录机制的问题。因此,如果我使用logging.config.fileConfig来加载我的配置文件,那么我使用logging.getLogger在创建之后对它们进行测试,并为它们的工作创建了一些模块的记录器。现在,如果我再次使用相同的配置文件调用logging.config.fileConfig,并为其他模块创建记录器,那么先前的模块仍然可以工作?基本上针对以下逻辑:python日志记录问题

logging.config.fileConfig(config_file) 
logger1 = logging.getLogger(module1) 
logger2 = logging.getLogger(module2) 
logging.config.fileConfig(config_file) 
logger3 = logging.getLogger(module3) 

config_file在两次调用中都是相同的。 logger1和logger2应该有效吗?如果config_file在这些调用中不同,那么该怎么办?目前我的记录器1和记录器2不工作后,我加载一个新的config_file。所以第一步是检查这是否是正常行为。如果是这样,可以做到这一点,而不需要将两个config_files合并成一个大文件?

问候, 波格丹

回答

2

配置文件旨在完全取代无论是在confguration现有配置 - 这是不是在配置命名的任何记录仪,或者其子女,是禁用的fileConfig(),如记录here。你可以防止这种禁用,但仅限于最近的Python版本。在程序中多次调用fileConfig()通常不是好习惯,除非您有特定的需要。这是不被禁止的,但这并不常见。

常见用法包括在根记录器上配置处理程序,也可能配置一个或两个顶级记录器;这是否适用于你?

+0

嗨,处理程序对于所有定义的记录器都是相同的,但是我确实需要为每个模块使用不同的质量名称。传递“disable_existing_loggers = False”得到了我想要的结果。 – Bogdan 2011-06-14 10:27:59