我想以这种方式配置我的Python记录器,以便记录器的每个实例都应该登录与记录器本身名称相同的文件。Python记录器动态文件名
例如为:
log_hm = logging.getLogger('healthmonitor')
log_hm.info("Testing Log") # Should log to /some/path/healthmonitor.log
log_sc = logging.getLogger('scripts')
log_sc.debug("Testing Scripts") # Should log to /some/path/scripts.log
log_cr = logging.getLogger('cron')
log_cr.info("Testing cron") # Should log to /some/path/cron.log
我想保留它通用的,不想硬编码的所有类型的记录器的名字,我可以有。那可能吗?
是否可以在“getLogger”调用之前添加处理程序,以便每次调用getLogger时都不必添加它? – sharjeel 2010-05-03 10:12:45
@sharjeel:在初始化期间设置处理程序,以后所有对'getLogger()'的调用都不需要添加处理程序。解决方案与〜unutbu的类似。在那个例子中'myLogger'应该只被调用一次,否则你会产生奇怪的副作用。 – 2010-05-03 10:39:00
我喜欢这种方法。您还可以跟踪打开的文件和新的实例,检查文件是否已经打开,然后不要重新打开。 虽然,在我的情况下,这种科学不是必需的:-) – sharjeel 2010-05-07 14:26:19