2016-05-23 4 views
0

Warum in Python logger.info("print something") nicht ausgegeben wird. Ich habe schon einmal Fragen gesehen, aber es gibt keine Lösung. Ich möchte nicht logger.debug oder logger.warning verwenden, um Text zu sehen.Logger.info gibt nie

Einfach logger.info sollte den Text drucken, sonst was ist die Verwendung von diesem?

logging.conf Datei wie unten

[loggers] 
keys=root 

[handlers] 
keys=stream 

[formatters] 
keys=formatter 

[logger_root] 
level=INFO 
handlers=stream 

[handler_stream] 
class=StreamHandler 
level=INFO 
formatter=formatter 
args=(sys.stderr,) 

[formatter_formatter] 
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s 

Demo-Code, der Logger zugreifen:

import logging 
logger = logging.getLogger() 

if __name__ == '__main__': 
    logger.info("logger") 
    print("print") 

Ausgang ist nur print, nicht die logger. So funktioniert logger.info nicht.

+1

Sicher hängt es von Ihren Protokollhandlereinstellungen ab? Ist die Ausgabe auf INFO-Ebene eingestellt? –

+0

Ihre Logging-Konfiguration wäre hilfreich, um uns zu helfen ... – zezollo

+0

Alles ist auf INFO (Root, Handler ..) – xavi

Antwort

0

scheint, dass Sie nicht geladen Konfigurationsdatei. Sie sollten hinzufügen:

logging.config.fileConfig('path_to_logging.conf') 

vor logger = logging.getLogger()

weil jetzt Sie die Standard WARNING Ebene verwenden.

EDIT: zu verwenden, um logging.config, Sie haben es zu importieren:

import logging.config 

So ist der vollständige Code sein sollte:

import logging 
import logging.config 

logging.config.fileConfig('path_to_logging.conf') 
logger = logging.getLogger() 

if __name__ == '__main__': 
    logger.info("logger") 
    print("print") 

Der obige Code, mit dem folgenden logging.conf (das gleiche wie Sie außer ich entfernte die sentry Teile):

[loggers] 
keys=root 

[handlers] 
keys=stream 

[formatters] 
keys=formatter 

[logger_root] 
level=INFO 
handlers=stream 

[handler_stream] 
class=StreamHandler 
level=INFO 
formatter=formatter 
args=(sys.stderr,) 

[formatter_formatter] 
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s 

funktioniert:

$ ./test_script3.py 
2016-05-23 15:37:40,437 - root - INFO - logger 
print 
+0

Logging hat keine Attribut Config – xavi

+0

OK, vergaß dies zu erwähnen, siehe meine Bearbeitung – zezollo

+0

Ich habe seltsame Fehler: 'ConfigParser.NoSectionError: Nein Abschnitt: 'Formatierer'' Weird coz Ich habe Formatierer in meiner Konfigurationsdatei. – xavi

1

Standardmäßig ist der Stammlogger (der, den Sie verwenden, wenn Sie logger.info sagen) auf eine Ebene von WARN festgelegt.

Sie können entweder tun:

logging.basicConfig(level=logging.INFO)

oder logging.getLogger().setLevel(logging.INFO)