Ich möchte meinen Python Logger so konfigurieren, dass jede Instanz des Loggers eine Datei mit demselben Namen wie der Name des Loggers selbst anmeldet.Python Logger dynamischer Dateiname
z.B .:
log_hm = logging.getLogger('healthmonitor')
log_hm.info("Testing Log") # Should log to /some/path/healthmonitor.log
log_sc = logging.getLogger('scripts')
log_sc.debug("Testing Scripts") # Should log to /some/path/scripts.log
log_cr = logging.getLogger('cron')
log_cr.info("Testing cron") # Should log to /some/path/cron.log
ich möchte es halten Generika und nicht wollen, alle Arten von Logger Namen codieren kann ich. Ist das möglich?
Könnte es möglich sein, den Handler vor dem Aufruf "getLogger" hinzuzufügen, so dass ich ihn nicht jedes Mal addieren muss, wenn ich getLogger anrufe? – sharjeel
@sharjeel: Setzen Sie den Handler während der Initialisierung und alle zukünftigen Aufrufe von 'getLogger()' müssen keinen Handler hinzufügen. Die Lösung ähnelt der von ~ unutbu. In diesem Beispiel sollte 'myLogger' nur einmal für die Datei aufgerufen werden, sonst haben Sie seltsame Nebenwirkungen. –
Ich mag diesen Ansatz. Sie können auch verfolgen, welche Dateien geöffnet sind, und bei einer neuen Instanz prüfen, ob die Datei bereits geöffnet ist, und sie nicht erneut öffnen. Obwohl solche Art von Wissenschaft in meinem Fall nicht erforderlich ist :-) – sharjeel