fix timezone handling and logging fallback robustness

This commit is contained in:
windyboy
2026-02-09 20:16:39 +08:00
parent 976a1fa1d0
commit aa0dc8ec47
13 changed files with 492 additions and 86 deletions
+23 -17
View File
@@ -13,13 +13,16 @@ from pathlib import Path
from typing import Optional
# Default log directory
DEFAULT_LOG_DIR = Path.home() / ".vlm" / "logs"
DEFAULT_LOG_FILE = "vlm.log"
MAX_LOG_SIZE = 10 * 1024 * 1024 # 10MB in bytes
BACKUP_COUNT = 5 # Keep 5 backup log files
def default_log_dir() -> Path:
"""Return the default log directory resolved at runtime."""
return Path.home() / ".vlm" / "logs"
class OperationContextFilter(logging.Filter):
"""Filter to add operation context to log records."""
@@ -57,10 +60,7 @@ def setup_logging(
# Use default log directory if not specified
if log_dir is None:
log_dir = DEFAULT_LOG_DIR
# Create log directory if it doesn't exist
log_dir.mkdir(parents=True, exist_ok=True)
log_dir = default_log_dir()
# Get root logger
logger = logging.getLogger("vlm")
@@ -83,17 +83,23 @@ def setup_logging(
logger.addHandler(console_handler)
# File handler with rotation (DEBUG+)
log_file_path = log_dir / log_file
file_handler = logging.handlers.RotatingFileHandler(
filename=log_file_path,
maxBytes=MAX_LOG_SIZE,
backupCount=BACKUP_COUNT,
encoding='utf-8'
)
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(formatter)
file_handler.addFilter(OperationContextFilter())
logger.addHandler(file_handler)
try:
log_dir.mkdir(parents=True, exist_ok=True)
log_file_path = log_dir / log_file
file_handler = logging.handlers.RotatingFileHandler(
filename=log_file_path,
maxBytes=MAX_LOG_SIZE,
backupCount=BACKUP_COUNT,
encoding='utf-8'
)
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(formatter)
file_handler.addFilter(OperationContextFilter())
logger.addHandler(file_handler)
except (OSError, PermissionError) as exc:
logger.warning(
f"File logging disabled (cannot write to {log_dir}): {exc}"
)
# Prevent propagation to root logger
logger.propagate = False