Skip to content

Instantly share code, notes, and snippets.

@julian-west
Created August 29, 2022 16:32
Show Gist options
  • Save julian-west/b0961ba1cbf4452c455c137eb600ef65 to your computer and use it in GitHub Desktop.
Save julian-west/b0961ba1cbf4452c455c137eb600ef65 to your computer and use it in GitHub Desktop.
Python logging using a configuration file
# src/main.py
import logging
import logging.config
import os
from datetime import datetime
from data_processing.processor import process_data
from dotenv import find_dotenv, load_dotenv
from model_training.trainer import train
# find .env file in parent directory
env_file = find_dotenv()
load_dotenv()
CONFIG_DIR = "./config"
LOG_DIR = "./logs"
def setup_logging():
"""Load logging configuration"""
log_configs = {"dev": "logging.dev.ini", "prod": "logging.prod.ini"}
config = log_configs.get(os.environ["ENV"], "logging.dev.ini")
config_path = "/".join([CONFIG_DIR, config])
timestamp = datetime.now().strftime("%Y%m%d-%H:%M:%S")
logging.config.fileConfig(
config_path,
disable_existing_loggers=False,
defaults={"logfilename": f"{LOG_DIR}/{timestamp}.log"},
)
if __name__ == "__main__":
setup_logging()
logger = logging.getLogger(__name__)
logger.info("Program started")
process_data()
train()
logger.info("Program finished")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment