43 lines
1.1 KiB
Python
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
|