2016-11-30 2 views
1

Ich versuche einen Logger für meine Django App zu bekommen. Ich rufe den Logger mit:Django Logger erstellt Datei, schreibt aber nicht

logger = logging.getLogger(__name__) 
logger.info("some stuff") 

innerhalb einer Funktion in meiner views.py.

Aber es funktioniert nicht, die Datei, die das Protokoll enthalten soll, erstellt, aber nichts darin geschrieben, hier sind die Einstellungen:

LOGGING = { 
'version': 1, 
'disable_existing_loggers': False, 
'formatters':{ 
    'standard': { 
     'format': '%(asctime)s [%(levelname)s] %(name)s: %(message)s' 
    }, 
}, 
'handlers': { 
    'file_INFO': { 
     'level': 'INFO', 
     'class': 'logging.handlers.RotatingFileHandler', 
     'filename': os.path.join(BASE_DIR, 'logs/site.logs'), 
     'maxBytes': 1024 * 1024 * 15, # 15MB 
     'backupCount': 10, 
     'formatter': 'standard', 
    }, 
    'console_INFO': { 
     'level': 'INFO', 
     'class': 'logging.StreamHandler', 
    } 
}, 
'loggers': { 
    'INFO': { 
     'handlers': ['file_INFO', ], 
     'level': 'INFO', 
     'propagate': True, 
    }, 
}, 

}

Jede Idee?

Danke!

Antwort

1

Sie haben Ihren Logger 'INFO' genannt, aber Sie haben nach dem Logger __name__ gefragt. Also ist der von Ihnen verwendete Logger nicht der gewünschte.

Ihre beste Wette ist den Root-Logger zu verwenden, wie folgt aus:

LOGGING = { 
    ... 
    'root': { 
     'handlers': ['file_INFO', ], 
     'level': 'INFO', 
    }, 
} 

Alle Logger zum Root-Logger ausbreiten werden (sofern nicht anders gesagt), und diese Einrichtung ist genug, um mehr als 90% der Anwendungen . Wenn Sie den Root-Logger verwenden, müssen Sie auch getLogger(__name__) nicht ausführen, Sie können einfach mit logging.info("some stuff") anmelden.

+0

Ich füge ein Missverständnis hinzu, wie der Logger funktioniert. Ich dachte, dass "__name__" wäre der Name einer Instanz eines Loggers und das, was ich in den Logger-Einstellungen definieren, sind unterschiedliche Verhaltensweisen, die ein Logger kann ich z. B. auf der Ebene eines Logging-Ticket oder den Namen von das Modul, von dem es gesendet wurde. – Nicolas

Verwandte Themen