Ich habe eine Anwendung, die aus vielen verschiedenen Modulen besteht, aber alles ist immer noch Teil einer einzigen Anwendung. Wie kann ich einen Logger richtig teilen, so dass alles in dieselbe Datei schreibt. Muss ich einen Logger übergeben? Ich würde es vorziehen, dies nicht tun zu müssen.Wie kann ich einen Logger für eine große Anwendung freigeben?
Beispielprojekt Layout:
/
__init__.py
main_application.py
functions_group1.py
functions_group2.py
functions_group3.py
Ich möchte so eine logger in main_application.py
wie definieren können:
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
file_log = logging.FileHandler('logs/%s.log' % (file_name), 'a', encoding='UTF-8')
file_log.setLevel(file_level)
formatter = logging.Formatter('%(asctime)s - %(levelname)-8s - %(name)-12s - %(message)s')
file_log.setFormatter(formatter)
logger.addHandler(file_log)
dann in der Lage sein functions_group3
verwenden logger
in functions_group1
, functions_group1
, das sind wie folgt in main_application
importiert:
hat nur eine Liste von Funktionen (gruppiert nach ähnlicher Funktionalität)
functions_group1
def function1_dothing():
# Want to log in here!
return ...
def function1_dothing2():
# Want to log in here!
return ...
def function1_dothing3():
# Want to log in here!
return ...
Wie kann ich die logger
über die gesamte Anwendung teilen?
Haben Sie darüber nachgedacht, https://docs.python.org/3/howto/logging.html zu lesen? – jonrsharpe
Welchen Teil empfehlen Sie @jonrsharpe? Ich weiß, wie man einen Logger erstellt. Ich weiß nicht, wie ich es über die gesamte Anwendung verteilen kann, ohne das Logger-Objekt überall hin zu geben. – Loggy
Sie müssen * nicht "einen einzigen Logger teilen" *; Jeder Teil erstellt einen Logger für seinen '__name__', aber Sie können konfigurieren, was mit diesen Protokollen geschieht (z. B. Schreiben in eine Datei) auf der obersten Ebene Ihres Moduls. – jonrsharpe