我在Python脚本中使用Advanced Python Scheduler。主程序通过使用我想要的日志的文件名调用logging.basicConfig来定义日志。此日志也设置为“DEBUG”作为日志记录级别,因为这是我目前需要的脚本。
不幸的是,因为logging.basicConfig已经以这种方式设置,所以apscheduler将其日志条目写入同一个日志文件。其中有很多这些,特别是因为我有一个每分钟运行一次的计划任务。
在将我的日志文件用于我自己的脚本时,有没有办法将apscheduler的日志输出重定向到另一个日志文件(不更改apscheduler的代码)?即有没有办法在我的脚本中更改每个模块输出的文件名?
我尝试阅读module page和HOWTO进行日志记录,但无法找到答案。
答案 0 :(得分: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
实例 - 可能不是您想要的。)
答案 1 :(得分:0)
也许你想调用logging.getLogger(“apscheduler”)并在那里设置它的日志文件?看到这个答案https://stackoverflow.com/a/2031557/782168