Created
April 1, 2021 02:10
-
-
Save SamWolski/61eac3f62f68b8137c126fb32cd4ea3f to your computer and use it in GitHub Desktop.
Quickly configure a python logger
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from datetime import datetime | |
import logging | |
import os | |
import sys | |
def quick_config(logger, | |
console_log_level=logging.INFO, file_log_level=logging.DEBUG, | |
console_fmt='[%(asctime)s] %(message)s', | |
console_datefmt='%y-%m-%d %H:%M:%S', | |
log_file_name=None, | |
file_fmt='%(asctime)s %(levelname)-8s %(name)s: %(message)s', | |
file_datefmt='%y-%m-%d %H:%M:%S', | |
file_log_dir='logs', | |
): | |
"""Rapidly configure a logger with a console and/or file handler. | |
""" | |
## Add console handler | |
if console_log_level is not None: | |
console_handler = logging.StreamHandler(sys.stdout) | |
console_handler.setLevel(console_log_level) | |
console_formatter = logging.Formatter(console_fmt, | |
datefmt=console_datefmt) | |
console_handler.setFormatter(console_formatter) | |
## Add handler to logger | |
logger.addHandler(console_handler) | |
## Add file handler | |
if file_log_level is not None: | |
## Ensure target directory exists | |
if not os.path.exists(file_log_dir): | |
os.makedirs(file_log_dir) | |
## Set up log file | |
log_file_name = logger.name if log_file_name is None else log_file_name | |
log_file = '{}_{:%y%m%d_%H%M%S}.log'.format(log_file_name, datetime.now()) | |
log_path = os.path.join(file_log_dir, log_file) | |
## Initialize file handler | |
file_handler = logging.FileHandler(log_path) | |
file_handler.setLevel(file_log_level) | |
file_formatter = logging.Formatter(file_fmt, | |
datefmt=file_datefmt) | |
file_handler.setFormatter(file_formatter) | |
## Add handler to logger | |
logger.addHandler(file_handler) | |
## Add NullHandler if no other handlers are configured | |
if not logger.hasHandlers(): | |
logger.addHandler(logging.NullHandler()) | |
return logger |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment