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=
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'})
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
Essayez d'appeler logging.config.dictConfig()
après fileConfig()
et définissez simplement le nom du fichier.