#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
author: Ewen Wang
email: wolfgangwong2012@gmail.com
license: Apache License 2.0
"""
import logging
[docs]
def get_logger(logName, logFile=False):
"""Get a logger in one step.
Logging is one of the most underrated features. Two things (5&3) to take away from Logging in Python:
1. FIVE levels of importance that logs can contain(debug, info, warning, error, critical);
2. THREE components to configure a logger in Python (a logger, a formatter, and at least one handler).
Args:
logName (str): A logger name to display in loggings.
logFile (bool): A target file to save loggins.
Returns:
logger (logging.getLogger): A well organized logger.
"""
logger = logging.getLogger(logName)
logger.setLevel(logging.DEBUG)
formatter=logging.Formatter('%(asctime)s %(name)s | %(levelname)s -> %(message)s')
if logFile:
file_handler = logging.FileHandler(logFile) # creating a handler to log on the filesystem
file_handler.setFormatter(formatter)
file_handler.setLevel(logging.DEBUG)
logger.addHandler(file_handler)
stream_handler = logging.StreamHandler() # creating a handler to log on the console
stream_handler.setFormatter(formatter)
stream_handler.setLevel(logging.INFO)
logger.addHandler(stream_handler)
return logger
def main():
try:
logger = get_logger(logName='test', logFile='test.log')
logger.info('this is a test')
1/0
except Exception as err:
logger.error(err)
raise err
if __name__ == '__main__':
main()