2013-01-18 17 views
13

Jaka jest metodologia pozwalająca ustalić, gdzie przechowywane są zapisy w dzienniku Pythona?Logowanie w języku Python - sprawdź lokalizację plików dziennika?

to znaczy jeśli mam zrobić:

import logging 
log = logging.getLogger(__name__) 
log.info('Test') 

Gdzie mogę znaleźć logi? Ponadto, gdy zadzwonię:

logging.getLogger(__name__) 

Czy jest to w jakiś sposób związane z zachowaniem/zapisem rejestratora?

Odpowiedz

12

Moduł logging wykorzystuje procedury obsługi dołączone do rejestratorów w celu decydowania, w jaki sposób, gdzie, a nawet czy wiadomości ostatecznie zostaną zapisane lub wyświetlone. Można domyślnie skonfigurować logging, aby również zapisywać do pliku. Naprawdę powinieneś przeczytać docs, ale jeśli zadzwonisz pod numer logging.basicConfig(filename=log_file_name), gdzie log_file_name jest nazwą pliku, do którego mają być wysyłane wiadomości (pamiętaj, że musisz to zrobić zanim cokolwiek innego w nazwie zostanie w ogóle wywołane), wtedy wszystkie wiadomości są logowane do wszystkich rejestratory (o ile nie nastąpi późniejsza rekonfiguracja później) zostaną tam zapisane. Bądź świadomy, na jakim poziomie jest ustawiony rejestrator; jeśli pamięć jest obsługiwana, info znajduje się poniżej domyślnego poziomu rejestrowania, więc musisz dodać level=logging.INFO w argumentach do basicConfig, a także, aby twoja wiadomość znalazła się w pliku.

Co do drugiej części pytania, logging.getLogger(some_string) zwraca Logger obiekt, włożonej do prawidłowej pozycji w hierarchii z rejestratorem korzeni, z których nazwę wartość some_string. Wywoływany bez argumentów, zwraca główny dziennik. __name__ zwraca nazwę bieżącego modułu, więc logging.getLogger(__name__) zwraca obiekt Logger o nazwie ustawionej na nazwę bieżącego modułu. Jest to popularny wzorzec używany z logging, ponieważ powoduje on, że struktura rejestratora odzwierciedla strukturę modułu kodu, co często sprawia, że ​​komunikaty rejestrowania są bardziej przydatne podczas debugowania.

0

Aby znaleźć lokalizację pliku dziennika, spróbuj instancji swój obiekt log w powłoce Pythona w swoim środowisku i patrząc na wartości:

log.handlers[0].stream

3

dostać lokalizację dziennika prostego pliku rejestratora, spróbuj

logging.getLoggerClass().root.handlers[0].baseFilename 
Powiązane problemy