Jak mogę użyć modułu logowania w Pythonie do zapisu do pliku? Za każdym razem, gdy próbuję go użyć, po prostu drukuje wiadomość.
128
Przykład użycia logging.basicConfig
zamiastlogging.fileHandler()
logging.basicConfig(filename=logname,
filemode='a',
format='%(asctime)s,%(msecs)d %(name)s %(levelname)s %(message)s',
datefmt='%H:%M:%S',
level=logging.DEBUG)
logging.info("Running Urban Planning")
self.logger = logging.getLogger('urbanGUI')
W kolejności pięć części wykonuje następujące czynności:
filename=logname
)filemode='a'
)format=...
)datefmt='%H:%M:%S'
)level=logging.DEBUG
).
if __name__ == '__main__':
włączone, jeśli działa na apacheif __name__ == '__main__':
nie jest wykonywana.Zaczerpnięte z „ książki kucharskiej logowania ”:
I jesteś gotowy.
PS Upewnij się, że przeczytałeś także HOWTO logowania .
źródło
logger.warning("message")
, nie mogę używaćlogger.info("message")
anilogger.debug("message")
. To trochę denerwujące.logger.setLevel(logging.DEBUG)
. Rejestratory można skonfigurować z wieloma programami obsługi; poziom skonfigurowany w programie rejestrującym określa, które komunikaty dziennika poziomu ważności należy wysłać do każdego z jego programów obsługi, a poziomy ustawione w programach obsługi określają, które poziomy program obsługi będzie przetwarzać. Zauważ, że ci, którzy chcą drukować komunikaty informacyjne, muszą ustawić to naINFO
zarówno w programie rejestrującym, jak i programie obsługi.logger.setLevel(logging.DEBUG)
- dzięki za komentarzeWolę użyć pliku konfiguracyjnego. Pozwala mi przełączać poziomy rejestrowania, lokalizacje itp. Bez zmiany kodu, gdy przechodzę od etapu programowania do wydania. Po prostu pakuję inny plik konfiguracyjny o tej samej nazwie iz tymi samymi zdefiniowanymi rejestratorami.
Oto mój kod dla pliku konfiguracyjnego dziennika
źródło
%%
w Pythonie 3. np.time.strftime("%%Y%%m%%D")
http://docs.python.org/library/logging.html#logging.basicConfig
źródło
logging
dokumentacja modułu na to pozwala. Możesz nawet wybrać, które dzienniki mają trafiać do terminala, a które do pliku, i wiele innych interesujących aplikacji. docs.python.org/3/howto/…oto prostszy sposób na zrobienie tego. to rozwiązanie nie używa słownika konfiguracyjnego i używa programu obsługi pliku rotacji, jak na przykład:
lub tak:
zmienna handlers musi być iterowalna. logpath + filename i debug_level to po prostu zmienne przechowujące odpowiednie informacje. oczywiście wartości parametrów funkcji zależą od Ciebie.
gdy pierwszy raz korzystałem z modułu logowania, popełniłem błąd, pisząc następujący komunikat, który generuje błąd blokady pliku systemu operacyjnego (powyższy sposób rozwiązuje ten problem):
a Bob jest twoim wujem!
źródło
http://docs.python.org/library/logging.handlers.html#filehandler
źródło
FileHandler
różnych sytuacjach. (WatchedFileHandler
,RotatingFileHandler
itp.)źródło
źródło
Opis formatu
Normalny sposób dzwonienia
Wynik
Używając funkcji Dict, Call wartości
otherMod2.py
Wynik
źródło