2012-11-30 9 views
19

Ho un file di configurazione della registrazione per l'accesso alla console e un file con diversi formati e livelli. Nel mio script python posso caricare questa configurazione e fondamentalmente la console e l'output del file sono ok.Come utilizzare la registrazione con python's fileConfig e configurare il file di registro nomefile

Ho impostato il nome del file nel file di configurazione come mostrato di seguito.

È possibile impostare il nome del file nello script Python stesso?

codice Python:

# set up logging 
logging.config.fileConfig(loginipath) 
logger = logging.getLogger('sLogger') 

# log something 
logger.debug('debug message') 
logger.info('info message') 
logger.warn('warn message') 
logger.error('error message') 
logger.critical('critical message') 

registrazione file di configurazione:

[loggers] 
keys=root,sLogger 

[handlers] 
keys=consoleHandler,fileHandler 

[formatters] 
keys=fileFormatter,consoleFormatter 

[logger_root] 
level=DEBUG 
handlers=consoleHandler 

[logger_sLogger] 
level=DEBUG 
handlers=consoleHandler,fileHandler 
qualname=sLogger 
propagate=0 

[handler_consoleHandler] 
class=StreamHandler 
level=WARNING 
formatter=consoleFormatter 
args=(sys.stdout,) 

[handler_fileHandler] 
class=FileHandler 
level=DEBUG 
formatter=fileFormatter 
args=('logfile.log',) 

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

[formatter_consoleFormatter] 
format=%(levelname)s - %(message)s 
datefmt= 

risposta

0

Prova chiamando logging.config.dictConfig() dopo fileConfig() e basta impostare il nome del file.

+0

Potrebbe dare un esempio di come impostare il nome del file. Grazie. –

29

Cambia la sezione handler_fileHandler in questo modo:

[handler_fileHandler] 
class=FileHandler 
level=DEBUG 
formatter=fileFormatter 
args=('%(logfilename)s',) 

e quindi aggiungere un argomento defaults alla chiamata fileConfig

logging.fileConfig(loginipath, defaults={'logfilename': '/var/log/mylog.log'}) 
+2

So che questo è vecchio, ma è possibile specificare il nome del file nel nome e nel percorso del file di configurazione piuttosto che nello script che lo chiama? – frei

Problemi correlati