Logging
Python Loggin module is logging
Five standated logging leveles
- DEBUG
- INFO
- WARNING
- ERROR
- CRITICAL
Default logging level is WARNING
To set the logging level:
logging.basicConfig(level=logging.DEBUG)
To create a log file:
logging.basicConfig(filename='test.log', level=logging.DEBUG)
To change the Log format to output time, loglevel and message:
logging.basicConfig(filename='test.log', level=logging.DEBUG,
format='%(asctime)s:%(levelname)s:%(message)s)'
For list of attribute names:
https://docs.python.org/3/library/logging.html#logrecord-attributes
It is recomended to use a separate logger, else root logger would be used.
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s:%(levelname)s:%(message)s')
# To send the logs to file and set the format
file_handler = loggin.FileHandler('filename.log')
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)
# To send the logs to console output and set the format
stream_handler = logging.StreamHandler()
stream_handler.setFormatter(formatter)
logger.addHandler(stream_handler)
# To send the logs level error or more
logger.error('some error goes here')
# To include traceback in addition the error message
logger.exception('some error goes here')
logger.info('some information goes here')
Note
By default, logger.exception
uses the log level of ERROR
. Alternatively, you can use the regular logging methods— logger.debug()
, logger.info()
, logger.warn()
, etc. and pass the exc_info
parameter, setting it to True
.
Example
while True:
try:
main_loop()
except Exception:
logger.warning("Fatal error in main loop", exc_info=True)