猿问

Python APScheduler如何禁用日志记录

我将APScheduler设置为通过cron时间表每秒运行一次(某种需要/想要的)。现在,我有记录器将所有内容发送到控制台。


如果不是因为日志记录对于我正在研究的内容非常重要,那就可以了。但是,我需要记录日志。我不需要的是APScheduler的信息记录。像这样的东西:


INFO在2013-05-26 13:05:06,007:作业“ loadavg.run(触发:cron [year ='*',month ='*',day ='*',week ='*',day_of_week =' *',hour ='*',minutes ='*',second ='*'],下一次执行:2013-05-26 13:05:06)“已成功执行

INFO在2013-05-26 13:05:06,008:正在运行作业“ cpu.run(触发:cron [year ='*',month ='*',day ='*',week ='*',day_of_week = '*',hour ='*',minutes ='*',second ='*'],下一次执行:2013-05-26 13:05:07)“(计划于2013-05-26 13:05 :06)

添加cron作业后,我的代码中包含以下内容:


logging.getLogger(“ apscheduler.scheduler”)。setLevel(logging.DEBUG)

据我所知,APScheduler没有用于指定日志记录信息的任何配置选项。


我知道我可以将记录器的级别指定为ERROR或其他级别,但是当将其设置为INFO时,我也不想记录所有这些(似乎无用的)信息。


慕雪6442864
浏览 1068回答 3
3回答

四季花海

首先,我假设您正在使用APScheduler进行类似cron的行为,因为如果您确实cron(8)每秒运行一次,它将自欺欺人,因为APScheduler声称它是“比外部运行的cron脚本更好的选择……”可能会使系统崩溃规定的是,日志记录模块的优点在于,它允许您的应用程序对库的日志记录行为具有广泛的控制权,而无需触及其代码。不幸的是,一开始它logging有点难以理解。由于该INFO级别报告了您不感兴趣的内容,因此您可以:class NoRunningFilter(logging.Filter):    def filter(self, record):        return not record.msg.startswith('Running job')my_filter = NoRunningFilter()logging.getLogger("apscheduler.scheduler").addFilter(my_filter)所有这些都可以通过日志记录配置文件动态指定,但是这比我以前学到的要神奇的多。

慕容708150

您可以尝试以下代码:logging.getLogger('apscheduler.executors.default').propagate = False

侃侃无极

这是我的代码,可以在不抱怨缺少处理程序的情况下工作:scheduler = BackgroundScheduler()scheduler.start()scheduler.add_job(every_minute, trigger='cron', second=0, id='every_minute')logging.getLogger('apscheduler.executors.default').setLevel(logging.WARNING)它不会完全禁用调度程序日志记录,但是会删除OP想要删除的信息消息。
随时随地看视频慕课网APP

相关分类

Python
我要回答