stones/scripts/utils/logger.py

54 lines
1.5 KiB
Python

#!/usr/bin/env python3
"""
Logger
Utility for setting up logging in Python scripts.
"""
import os
import sys
import logging
from datetime import datetime
from typing import Optional
def setup_logger(name: str, log_level: int = logging.INFO, log_file: Optional[str] = None) -> logging.Logger:
"""
Set up a logger with the specified name and log level.
Args:
name: Name of the logger
log_level: Logging level (default: INFO)
log_file: Path to log file (default: None, logs to console only)
Returns:
Configured logger instance
"""
# Create logger
logger = logging.getLogger(name)
logger.setLevel(log_level)
# Create formatter
formatter = logging.Formatter(
'%(asctime)s - %(name)s - %(levelname)s - %(message)s',
datefmt='%Y-%m-%d %H:%M:%S'
)
# Create console handler
console_handler = logging.StreamHandler()
console_handler.setLevel(log_level)
console_handler.setFormatter(formatter)
logger.addHandler(console_handler)
# Create file handler if log_file is specified
if log_file:
# Create logs directory if it doesn't exist
log_dir = os.path.dirname(log_file)
if log_dir and not os.path.exists(log_dir):
os.makedirs(log_dir)
file_handler = logging.FileHandler(log_file)
file_handler.setLevel(log_level)
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)
return logger