How to use logging with python's fileConfig and configure the logfile filename
39,860
Solution 1
Change your handler_fileHandler
section like so:
[handler_fileHandler]
class=FileHandler
level=DEBUG
formatter=fileFormatter
args=('%(logfilename)s',)
and then add a defaults
argument to the fileConfig call
logging.config.fileConfig(loginipath, defaults={'logfilename': '/var/log/mylog.log'})
Solution 2
Both handlers worked for me:
(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')
after reading examples at https://docs.python.org/2/library/logging.config.html
![Admin](/assets/logo_square_200-5d0d61d6853298bd2a4fe063103715b4daf2819fc21225efa21dfb93e61952ea.png)
Author by
Admin
Updated on July 09, 2022Comments
-
Admin almost 2 years
I have a logging configuration file for logging to console and a file with different formats and levels. In my python script I can load this configuration and basically console and file output are ok.
I set the file name in the config file as shown below.
Is it possible to set that file name in the python script itself?
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')
logging config file:
[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=