2013-08-03 40 views
4

我在Python脚本中使用Advanced Python Scheduler。主程序通过调用logging.basicConfig和我想要的日志的文件名来定义日志。这个日志也被设置为“DEBUG”作为日志级别,因为这是我目前需要的脚本。如何在Python中为导入的模块定义不同的记录器?

不幸的是,因为以这种方式设置了logging.basicConfig,所以apscheduler会将其日志条目写入同一个日志文件。其中有很多,特别是因为我有一个计划任务每​​分钟运行一次。

有没有办法将apscheduler的日志输出重定向到另一个日志文件(而不改变apscheduler的代码),而我的日志文件用于我自己的脚本?即有没有办法在我的脚本中更改每个模块输出的文件名?

我尝试阅读module page和HOWTO进行记录,但找不到答案。

回答

2

设置为apscheduler记录器级别为所需值(例如WARNING避免apscheduler这样看DEBUG和INFO消息:

logging.getLogger('apscheduler').setLevel(logging.WARNING) 
WARNING和更高的严重性

你仍然会得到的消息为了引导从apscheduler消息到一个单独的文件,使用

aplogger = logging.getLogger('apscheduler') 
aplogger.propagate = False 
aplogger.setLevel(logging.WARNING) # or whatever 
aphandler = logging.FileHandler(...) # as per what you want 
aplogger.addHandler(aphandler) 

确保上面的代码是唯一的卡带领一次(否则你会添加多个FileHandler实例 - 可能不是你想要的)。

+0

完美工作,至少是setLevel方法,我认为它会为我完成这项工作(因为只要它不阻塞它就没有问题)。稍后会尝试其余的。非常感谢。 – ShankarG

0

也许你想调用logging.getLogger(“apscheduler”)并在那里设置它的日志文件?看到这个答案https://stackoverflow.com/a/2031557/782168

+0

谢谢,但你能说明一点吗?我不知道如何通过调用basicConfig()来设置文件名。 – ShankarG

+0

@ShankarG there * *有关如何设置日志记录*的其他文档,而不是通过'basicConfig()',请参阅日志记录手册,它是Python文档的一部分。 –

相关问题