6

我在 Python 脚本中使用Advanced Python Scheduler 。主程序通过使用我想要的日志文件名调用 logging.basicConfig 来定义一个日志。该日志也设置为“DEBUG”作为日志记录级别,因为这是我目前需要的脚本。

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

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

我尝试阅读模块页面和日志记录的 HOWTO,但找不到答案。

4

2 回答 2

5

将记录器级别设置为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实例——可能不是你想要的)。

于 2013-08-03T14:12:24.227 回答
0

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

于 2013-08-03T12:59:06.687 回答