2012-05-22 10 views
8

Vom Django documentation, hier ist ein Beispiel Format für die Protokollierung:Logging Formatierer in django

'formatters': { 
    'verbose': { 
     'format': '%(levelname)s %(asctime)s %(module)s: %(message)s' 
    } 
} 

Dies druckt etwas wie:

ERROR 2012-05-22 14: 33: 07.261 views 42892 4398727168 Hallo

Gibt es eine Liste von Elementen, die Sie in die Zeichenfolgenformatierung aufnehmen können? Zum Beispiel würde Ich mag Lage sein, die Funktion und Anwendung, um zu sehen, wo die Nachricht erstellt wird, zum Beispiel:

ERROR Zeit myproject.myapp.views.login_function Nachricht

Antwort

19

Von Python logging module documentation:

  • asctime: %(asctime)s
    Von Menschen lesbare Zeit, als die LogRecord erstellt wurde. Standardmäßig hat dies die Form '2003-07-08 16: 49: 45,896' (die Zahlen nach dem Komma sind Millisekunden der Zeit).

  • erstellt: %(created)f
    Zeit, wenn die LogRecord erstellt wurde (wie von time.time() zurückgegeben).

  • Dateinamen: %(filename)s
    Dateiname Teil Pfadname.

  • funcName: %(funcName)s
    Name der Funktion, um die Protokollierung Aufruf enthält.

  • levelname: %(levelname)s Text Protokollierungsstufe für die Nachricht ('DEBUG', 'INFO', 'Warnung', 'ERROR', 'CRITICAL').

  • levelno: %(levelno)s
    Numerische Protokollierungsstufe für die Nachricht (DEBUG, INFO, WARNING, ERROR, CRITICAL).

  • lineno: %(lineno)d
    Quelle Zeilennummer, wo die Protokollierung Aufruf ausgegeben wurde (falls vorhanden).

  • Modul: %(module)s
    Module (Namensteil Dateinamen).

  • msecs: %(msecs)d
    Millisekunde Teil der Zeit, wenn die LogRecord erstellt wurde.

  • Nachricht: %(message)s
    Die protokollierten Nachricht, als msg % args berechnet. Dies wird eingestellt, wenn Formatter.format() aufgerufen wird.

  • Name: %(name)s
    Name des Logger verwendet, um den Anruf anzumelden.

  • Pfadname: %(pathname)s
    Vollständiger Pfadname der Quelldatei, in der die Protokollierung Aufruf ausgegeben wurde (falls vorhanden).

  • Prozess: %(process)d
    ID-Prozess (falls vorhanden).

  • process: %(processName)s
    Prozessname (falls vorhanden).

  • relativeCreated: %(relativeCreated)d
    Zeit in Millisekunden, wenn die LogRecord erstellt wurde, bezogen auf die Zeit der Protokollierungsmodul geladen wurde.

  • Gewinde: %(thread)d
    Thread-ID (falls vorhanden).

  • threadName: %(threadName)s
    Thema Name (falls vorhanden).

Die folgenden Argumente sind auch Formatter.format() zur Verfügung, obwohl sie nicht in dem Format-String enthalten sein sollen:

  • args:
    Das Tupel der Argumente in msg verschmolzen Nachricht zu produzieren.

  • exc_info:
    Exception tuple (à la sys.exc_info) oder, falls keine Ausnahme aufgetreten ist, None.

  • msg:
    Das String-Format in dem ursprünglichen Protokollaufruf übergeben. Zusammengeführt mit args, um eine Nachricht oder ein beliebiges Objekt zu erzeugen (siehe Using arbitrary objects as messages).

1

Schritt1. Bearbeiten Sie die Datei settings.py

$ cd mysite 
$ vim mysite/settings.py 
'formatters': { 
    'simple': { 
     'format': '%(levelname)s %(asctime)s %(name)s.%(funcName)s:%(lineno)s- %(message)s' 
    }, 
}, 

Schritt2. Sie sollten Logger in Ihrer Codierung wie folgt verwenden:

import logging 
logger = logging.getLogger(__name__) 

def fn1() { 
    logger.info('great!') 
    logger.info(__name__) 
} 

Hoffe, dass Sie hilft!