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

不幸的是,由于logging.basicConfig是以这种方式设置的,因此apscheduler会将其日志条目写入同一日志文件。其中有很多,尤其是因为我有一个预定的任务每分钟运行一次。

在将日志文件用于自己的脚本时,是否可以将apscheduler的日志输出重定向到另一个日志文件(无需更改apscheduler的代码)? IE。有没有一种方法可以更改脚本中每个模块输出的文件名?

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

最佳答案

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实例-可能不是您想要的)。

关于python - 如何在Python中为导入的模块定义其他记录器?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18032967/

10-15 16:05