2009-02-10 13 views

risposta

114

Certo, controllare formatters nella documentazione di registrazione. Specificamente le variabili lineno e pathname.

% (percorso) s percorso completo del file di origine in cui è stata emessa la chiamata di registrazione (se disponibile).

% (nome file) s Nome file parte del percorso.

% (modulo) s Modulo (nome porzione del nome file).

% (funcName) s Nome della funzione che contiene la chiamata di registrazione.

% (lineno) d Numero di riga di origine in cui è stata emessa la chiamata di registrazione (se disponibile).

simile a questa:

formatter = logging.Formatter('[%(asctime)s] p%(process)s {%(pathname)s:%(lineno)d} %(levelname)s - %(message)s','%m-%d %H:%M:%S') 
+2

+1: citazione del documentazione. –

11

In cima a Seb's very useful answer, ecco un frammento di codice pratico che dimostra l'utilizzo logger con un formato ragionevole:

#!/usr/bin/env python 
import logging 

logging.basicConfig(format='%(asctime)s,%(msecs)d %(levelname)-8s [%(filename)s:%(lineno)d] %(message)s', 
    datefmt='%d-%m-%Y:%H:%M:%S', 
    level=logging.DEBUG) 

logger = logging.getLogger('stackoverflow_rocks') 
logger.debug("This is a debug log") 
logger.info("This is an info log") 
logger.critical("This is critical") 
logger.error("An error occurred") 

genera questo output:

06-06-2017:17:07:02,158 DEBUG [log.py:11] This is a debug log 
06-06-2017:17:07:02,158 INFO  [log.py:12] This is an info log 
06-06-2017:17:07:02,158 CRITICAL [log.py:13] This is critical 
06-06-2017:17:07:02,158 ERROR [log.py:14] An error occurred 
+0

Utilizzare questo per ulteriori dettagli: formatter = logging.Formatter ( '% (asctime) s,% (levelname) -8s [% (nome file) s:% (modulo) s:% (funcName) s:% (lineno) d]% (messaggio) s ') –

Problemi correlati