Turn off logging in schedule library

荒凉一梦 提交于 2021-02-18 20:48:06

问题


Objective: prevent schedule from logging every time it runs.

Background:

I am using the logging and schedule libraries in a python project.

My log file contains information about the physical state of a instrument run by a Raspberry Pi, and is updated every 10 seconds.

I use the schedule library to schedule that periodic log.

Here is the limited documentation I have found for schedule.

The Problem:

The schedule library logs this statement, every time it runs a job.

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

The function that schedule calls is update_log(), a function that calculates the variables included in the log I run every ten seconds and logs them (example below).

2016-06-29 09:01:51,022 INFO: Dist: 12.3 m Rate: 23.8 cm/s

Because schedule is producing its own (fairly useless) log line, it makes the logging I am actually trying to do very difficult to read.

The Goal:

Prevent schedule from logging that first statement.


回答1:


The schedule module is exclusively using the logger called schedule. You can use the logging library to disable this logger from writing to your main logger.

import logging
logging.getLogger('schedule').propagate = False

If you don't want schedule's logs at all, you can also disable it by settings its log level above any real log level.

import logging
logging.getLogger('schedule').setLevel(logging.CRITICAL + 10)

If you just want some messages to get through, set the level to a regular logging level.

Since python2.7, you can also use a NullHandler instead.

import logging
logging.getLogger('schedule').propagate = False
logging.getLogger('schedule').addHandler(logging.NullHandler())


来源:https://stackoverflow.com/questions/38102291/turn-off-logging-in-schedule-library

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!