关闭日程表库中的日志记录

Mic*_*ter 7 python logging scheduler python-2.7

目标:防止schedule每次运行时记录.

背景:

我在python项目中使用logging和schedule库.

我的日志文件包含有关Raspberry Pi运行的仪器的物理状态的信息,并且每10秒更新一次.

我使用该schedule库来安排定期日志.

这是我找到的有限文档schedule.

问题:

该schedule库记录这一说法,每一次它运行的作业.

2016-06-29 09:01:51,022 INFO: Running job every 10 seconds do update_log() (Last run...
Run Code Online (Sandbox Code Playgroud)

schedule调用的函数是update_log()一个函数,它计算每十秒运行的日志中包含的变量并记录它们(例如下面的例子).

2016-06-29 09:01:51,022 INFO: Dist: 12.3 m Rate: 23.8 cm/s
Run Code Online (Sandbox Code Playgroud)

因为它schedule正在生成它自己的(相当无用的)日志行,所以它使我实际上尝试的日志记录非常难以阅读.

目标:

防止schedule记录第一个语句.

Mis*_*agi 8

该schedule模块专门使用调用的记录器schedule.您可以使用该logging库禁用此记录器写入主记录器.

import logging
logging.getLogger('schedule').propagate = False
Run Code Online (Sandbox Code Playgroud)

如果您根本不想要schedule日志,也可以通过将其日志级别设置为高于任何实际日志级别来禁用它.

import logging
logging.getLogger('schedule').setLevel(logging.CRITICAL + 10)
Run Code Online (Sandbox Code Playgroud)

如果您只想要一些消息通过,请将级别设置为常规logging级别.

从python2.7开始,您也可以使用NullHandler.

import logging
logging.getLogger('schedule').propagate = False
logging.getLogger('schedule').addHandler(logging.NullHandler())
Run Code Online (Sandbox Code Playgroud)

  • 我不知道能够改变个别记录器的优先级.我将级别设置为`logging.CRITICAL`以删除警告,并仍然允许记录严重错误.谢谢! (2认同)