Skip to content

Instantly share code, notes, and snippets.

@heyodai
Last active July 7, 2023 16:43
Show Gist options
  • Save heyodai/66334dea6183a9b1370139b0257f9f6d to your computer and use it in GitHub Desktop.
Save heyodai/66334dea6183a9b1370139b0257f9f6d to your computer and use it in GitHub Desktop.
Boilerplate for Python logging
import logging
import os
from datetime import datetime
def setup_logging() -> logging.Logger:
"""
Set up logging for the script.
Returns
-------
logging.Logger
The logger instance.
"""
log_directory = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'logs')
os.makedirs(log_directory, exist_ok=True)
logger = logging.getLogger()
logger.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
stream_handler = logging.StreamHandler()
stream_handler.setLevel(logging.INFO)
stream_handler.setFormatter(formatter)
logger.addHandler(stream_handler)
log_file = os.path.join(log_directory, f'{datetime.utcnow().strftime("%Y%m%d%H%M%S")}.log')
file_handler = logging.FileHandler(filename=log_file) # Store file handler as instance variable
file_handler.setLevel(logging.INFO)
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)
return logger
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment