Files
torchvision-vibecoding-project/utils/log_utils.py
2025-04-12 10:44:52 +01:00

45 lines
1.6 KiB
Python

import logging
import os
import sys
def setup_logging(log_dir, config_name):
"""Configures logging to output to both file and console.
Args:
log_dir (str): The directory where the log file should be saved.
config_name (str): The name of the configuration run, used for the log filename.
"""
# Ensure log directory exists
os.makedirs(log_dir, exist_ok=True)
log_filename = f"{config_name}_train.log"
log_filepath = os.path.join(log_dir, log_filename)
# Configure the root logger
logging.basicConfig(
level=logging.INFO, # Log INFO level and above (INFO, WARNING, ERROR, CRITICAL)
format="%(asctime)s [%(levelname)s] %(message)s",
datefmt="%Y-%m-%d %H:%M:%S",
handlers=[
logging.FileHandler(log_filepath), # Log to a file
logging.StreamHandler(sys.stdout), # Log to the console (stdout)
],
# Force=True ensures that if basicConfig was called before (e.g., by a library),
# this configuration will overwrite it. Use with caution if libraries might
# configure logging themselves in complex ways.
force=True,
)
logging.info(f"Logging configured. Log file: {log_filepath}")
# Example usage (can be removed or kept for testing):
if __name__ == "__main__":
print("Testing logging setup...")
setup_logging("temp_logs", "test_config")
logging.info("This is an info message.")
logging.warning("This is a warning message.")
logging.error("This is an error message.")
print("Check 'temp_logs/test_config_train.log' and console output.")