vibe-coding-cn/libs/external/chat-vault/src/logger.py

43 lines
1.1 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""日志模块 - 同时输出到控制台和文件"""
import logging
import os
from datetime import datetime
_logger = None
def setup_logger(log_dir: str = None) -> logging.Logger:
global _logger
if _logger:
return _logger
_logger = logging.getLogger('ai_chat_converter')
_logger.setLevel(logging.DEBUG)
_logger.handlers.clear()
fmt = logging.Formatter('%(asctime)s [%(levelname)s] %(message)s', datefmt='%Y-%m-%d %H:%M:%S')
# 控制台
ch = logging.StreamHandler()
ch.setLevel(logging.INFO)
ch.setFormatter(fmt)
_logger.addHandler(ch)
# 文件
if log_dir:
os.makedirs(log_dir, exist_ok=True)
log_file = os.path.join(log_dir, f"sync_{datetime.now().strftime('%Y%m%d')}.log")
fh = logging.FileHandler(log_file, encoding='utf-8')
fh.setLevel(logging.DEBUG)
fh.setFormatter(fmt)
_logger.addHandler(fh)
return _logger
def get_logger() -> logging.Logger:
global _logger
if not _logger:
_logger = setup_logger()
return _logger