web-dev-qa-db-fra.com

Comment utiliser la journalisation avec python fileConfig et configurer le fichier journal nom de fichier

J'ai un fichier de configuration de journalisation pour la journalisation sur console et un fichier avec différents formats et niveaux. Dans mon script python, je peux charger cette configuration et, en gros, la sortie de la console et des fichiers est correcte.

J'ai défini le nom du fichier dans le fichier de configuration comme indiqué ci-dessous.

Est-il possible de définir ce nom de fichier dans le script python lui-même?

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

fichier de configuration de journalisation:

[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

Changez votre section handler_fileHandler comme suit:

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

puis ajoutez un argument defaults à l'appel fileConfig

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

Les deux manutentionnaires ont travaillé pour moi:

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

après avoir lu des exemples sur https://docs.python.org/2/library/logging.config.html

3
MG2

Essayez d'appeler logging.config.dictConfig() après fileConfig() et définissez simplement le nom du fichier.

0
John Zwinck