41 lines
1.1 KiB
Python
41 lines
1.1 KiB
Python
"""日志配置"""
|
||
|
||
import logging
|
||
from logging.handlers import RotatingFileHandler
|
||
|
||
|
||
def setup_logging(config) -> logging.Logger:
|
||
"""配置日志系统,返回 logger 实例。"""
|
||
logger = logging.getLogger("wechat_clicker")
|
||
logger.setLevel(getattr(logging, config.log_level, logging.INFO))
|
||
|
||
# 避免重复添加 handler
|
||
if logger.handlers:
|
||
return logger
|
||
|
||
formatter = logging.Formatter(
|
||
"%(asctime)s [%(levelname)s] %(name)s: %(message)s",
|
||
datefmt="%Y-%m-%d %H:%M:%S",
|
||
)
|
||
|
||
# 文件 handler(自动轮转)
|
||
file_handler = RotatingFileHandler(
|
||
config.log_file,
|
||
maxBytes=config.log_max_bytes,
|
||
backupCount=config.log_backup_count,
|
||
encoding="utf-8",
|
||
)
|
||
file_handler.setFormatter(formatter)
|
||
logger.addHandler(file_handler)
|
||
|
||
# 控制台 handler
|
||
if config.log_console:
|
||
console_handler = logging.StreamHandler()
|
||
console_handler.setFormatter(logging.Formatter(
|
||
"%(asctime)s [%(levelname)s] %(message)s",
|
||
datefmt="%H:%M:%S",
|
||
))
|
||
logger.addHandler(console_handler)
|
||
|
||
return logger
|