Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Logging confusion in python

I want to create two log files, one that logs everything and another that logs, just warnings and errors.

Here is my code,

import logging


logger = logging.getLogger(__name__)

# custom log handlers
err_handler = logging.FileHandler(filename='error.log')
info_handler = logging.FileHandler(filename='info.log')
# setting levels of the handlers
err_handler.setLevel(logging.WARNING)
info_handler.setLevel(logging.INFO)
# formatting for handlers
err_formatter = logging.Formatter('%(name)s - %(asctime)s - %(levelname)s - %(funcName)s - %(message)s')
info_formatter = logging.Formatter('%(name)s - %(asctime)s - %(levelname)s - %(funcName)s - %(message)s')
# setting the formatters
err_handler.setFormatter(err_formatter)
info_handler.setFormatter(info_formatter)
# add the handlers to the custom logger
logger.addHandler(err_handler)
logger.addHandler(info_handler)


logger.info('test_info')
logger.warning('test_warn')
logger.error('test_err')
logger.info('test_info')

The output files are:

info.log
__main__ - 2019-08-22 15:13:36,625 - WARNING - <module> - test_warn
__main__ - 2019-08-22 15:13:36,625 - ERROR - <module> - test_err
error.log
__main__ - 2019-08-22 15:13:36,625 - WARNING - <module> - test_warn
__main__ - 2019-08-22 15:13:36,625 - ERROR - <module> - test_err

Why are the info logs not showing?

like image 208
piyush daga Avatar asked Dec 12 '25 15:12

piyush daga


1 Answers

Well, log works like a filter. logger -> handler. So first you need to ensure your logger's level is at least INFO.

Add logger.setLevel(logging.INFO) after logger = logging.getLogger(__name__).

like image 84
Sraw Avatar answered Dec 15 '25 09:12

Sraw