it-swarm.com.de

So verwenden Sie die Protokollierung mit python fileConfig und konfigurieren den Dateinamen der Protokolldatei

Ich habe eine Protokollierungskonfigurationsdatei für die Protokollierung an der Konsole und eine Datei mit unterschiedlichen Formaten und Ebenen. In meinem Python-Skript kann ich diese Konfiguration laden, und die Ausgabe von Konsole und Datei ist in Ordnung.

Ich habe den Dateinamen in der Konfigurationsdatei wie folgt eingestellt.

Ist es möglich, diesen Dateinamen im Python-Skript selbst festzulegen?

Python-Code:

# 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')

Protokollierungs-Konfigurationsdatei:

[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=
25
Micha

Ändern Sie Ihren handler_fileHandler-Bereich wie folgt:

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

fügen Sie dann dem Aufruf von fileConfig ein defaults-Argument hinzu

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

Beide Handler arbeiteten für mich:

(1)

logging.config.fileConfig( 'logging.ini' , disable_existing_loggers=False)


[handler_myhandler1]
class=FileHandler
level=DEBUG
formatter=form01
args=('python.log', 'w')

(2)

logging.config.fileConfig( 'logging.ini' , disable_existing_loggers=False, defaults={ 'logfilename' : getSomeName() } )

[handler_myhandler2]
class=FileHandler
level=DEBUG
formatter=form01
args=('%(logfilename)s','w')

nach dem Lesen von Beispielen unter https://docs.python.org/2/library/logging.config.html

3
MG2

Rufen Sie logging.config.dictConfig() nach fileConfig() auf und setzen Sie einfach den Dateinamen.

0
John Zwinck