2016-06-29 9 views
6

Cel: zapobiega rejestrowaniu przy każdym uruchomieniu schedule.Wyłącz rejestrowanie w bibliotece harmonogramu

Tło:

używam biblioteki logging i schedule w projekcie Pythona.

Mój plik dziennika zawiera informacje o stanie fizycznym instrumentu obsługiwanego przez Raspberry Pi i jest aktualizowany co 10 sekund.

Używam biblioteki schedule do planowania tego dziennika okresowego.

Here to ograniczona dokumentacja, którą znalazłem dla schedule.

Problem:

W schedule kłody biblioteczne tego oświadczenia, za każdym razem uruchamia pracę.

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

funkcji, która jest update_log()schedule połączeń, funkcja, która oblicza zmienne zawarte w dzienniku biegam co dziesięć sekund i rejestruje je (przykład poniżej).

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

Ponieważ schedule produkuje własny (dość bezużyteczny) wiersz dziennika, to sprawia, że ​​rejestrowanie Jestem rzeczywiście próbuje zrobić bardzo trudne do odczytania.

Cel:

Prevent schedule od zalogowaniu że pierwsze pismo.

+0

Co sądzisz o ustawieniu poziomu rejestrowania na wyższą niż INFO (OSTRZEŻENIE) i dokonaniu rejestracji na poziomie OSTRZEŻENIE? – bernie

+1

Btw, UWIELBIAM moduł "harmonogramu". – bernie

+0

To rozwiązałoby problem, ale wydaje się, że jest to bardziej kij-taśma niż rozwiązanie. Używam również ostrzeżenia o zdarzeniach, które są nienormalne, ale nie tak straszne, że zatrzymują proces. –

Odpowiedz

5

Moduł schedule to exclusively using the logger called schedule. Możesz użyć biblioteki logging do disable this logger from writing to your main logger.

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

Jeśli nie chcesz schedule „s logi w ogóle, można również wyłączyć w ustawieniach swojego poziomu dziennika powyżej jakiegokolwiek rzeczywistego poziomu dziennika.

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

Od python2.7, można również użyć NullHandler zamiast.

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

Powoduje to wyłączenie linii harmonogramu w dzienniku, ale otrzymuję komunikat "Brak programów obsługi dla programu rejestrującego" "ostrzeżenie raz na początku programu. –

+0

@MichaelMolter Dodałem opis, jak całkowicie wyłączyć rejestrowanie "harmonogramu". – MisterMiyagi

+1

Nie wiedziałem, że mogę zmienić priorytet poszczególnych rejestratorów. Ustawiam poziom na "logging.CRITICAL", aby usunąć ostrzeżenie i nadal zezwalać na rejestrowanie krytycznych błędów. Dzięki! –

Powiązane problemy