2013-05-26 13 views
16

Sto tentando di decifrare le informazioni contenute nei miei registri (l'impostazione di registrazione utilizza il formattatore predefinito). I documentation afferma:qual è il formattatore di registrazione python predefinito

Fare la formattazione di un record - se un formattatore viene impostato, lo usano. Altrimenti, usa il formattatore predefinito per il modulo.

Tuttavia, non riesco a trovare alcun riferimento affermando in realtà che cosa è questo formato predefinito.

Grazie

+0

Sembra che la documentazione dovrebbe indicarlo. –

risposta

24

Il formato predefinito si trova here che è:

BASIC_FORMAT = "%(levelname)s:%(name)s:%(message)s" 

Il codice Format vi dirà come è possibile personalizzarla. Ecco un esempio su come puoi personalizzarlo.

import logging 
logging.basicConfig(
    level=logging.DEBUG, 
    format="[%(asctime)s] %(levelname)s [%(name)s.%(funcName)s:%(lineno)d] %(message)s", 
    datefmt="%H:%M:%S", stream=sys.stdout) 
logging.info("HEY") 

che si traduce in:

[26/May/2013 06:41:40] INFO [root.<module>:1] HEY 
+0

Come si conosce l'attributo BASIC_FORMAT della registrazione? non è menzionato nel documento dopo tutto – iMath

+1

'log' non è definito nell'esempio. Probabilmente dovrebbe essere chiamato "logging". – Ztyx

1

E 'nella fonte di logging/__init__.py:

_defaultFormatter = Formatter() 

la stringa di formattazione predefinita è %(message)s, che è nella fonte così:

if fmt: 
    self._fmt = fmt 
else: 
    self._fmt = "%(message)s" 
1

default sembra essere %(levelname)s:%(name)s:%(message)s

import logging 
logging.error("Some error") 
print "fmt: " , logging.root.handlers[0].formatter._fmt 
# ERROR:root:Some error 
# fmt: %(levelname)s:%(name)s:%(message)s 
+0

Mostra come controllare il formattatore corrente invece del predefinito nel codice sorgente è una risposta migliore IMO. – jjj

0
import logging 
print(logging.BASIC_FORMAT) 

Vecchio thread, ma questa arriva prima nei miei risultati di ricerca di Google per la query "pitone formato di registrazione predefinito", così ho pensato che avrei dovuto aggiungere la mia risposta.

Anche alcuni commenti hanno chiesto come si sarebbe potuto venire a scoprirlo da soli. Qui è una cosa naturale da fare:

import logging 
print(dir(logging)) 

BASIC_FORMAT è in là, in realtà è la prima voce il risultato nel mio caso.

Problemi correlati