| | import logging |
| | import colorlog |
| | import sys |
| | import os |
| | from dotenv import load_dotenv |
| |
|
| | |
| | load_dotenv() |
| |
|
| | def get_log_level() -> int: |
| | """从环境变量获取日志级别 |
| | |
| | Returns: |
| | int: logging 模块定义的日志级别 |
| | """ |
| | level_map = { |
| | 'DEBUG': logging.DEBUG, |
| | 'INFO': logging.INFO, |
| | 'WARNING': logging.WARNING, |
| | 'ERROR': logging.ERROR, |
| | 'CRITICAL': logging.CRITICAL |
| | } |
| | |
| | level = os.getenv('LOG_LEVEL', 'INFO').upper() |
| | return level_map.get(level, logging.INFO) |
| |
|
| | def setup_logger(name: str = "DeepClaude") -> logging.Logger: |
| | """设置一个彩色的logger |
| | |
| | Args: |
| | name (str, optional): logger的名称. Defaults to "DeepClaude". |
| | |
| | Returns: |
| | logging.Logger: 配置好的logger实例 |
| | """ |
| | logger = colorlog.getLogger(name) |
| | |
| | if logger.handlers: |
| | return logger |
| | |
| | |
| | log_level = get_log_level() |
| | |
| | |
| | logger.setLevel(log_level) |
| | |
| | |
| | console_handler = logging.StreamHandler(sys.stdout) |
| | console_handler.setLevel(log_level) |
| | |
| | |
| | formatter = colorlog.ColoredFormatter( |
| | "%(log_color)s%(asctime)s - %(name)s - %(levelname)s - %(message)s", |
| | datefmt="%Y-%m-%d %H:%M:%S", |
| | log_colors={ |
| | 'DEBUG': 'cyan', |
| | 'INFO': 'green', |
| | 'WARNING': 'yellow', |
| | 'ERROR': 'red', |
| | 'CRITICAL': 'red,bg_white', |
| | } |
| | ) |
| | |
| | console_handler.setFormatter(formatter) |
| | logger.addHandler(console_handler) |
| | |
| | return logger |
| |
|
| | |
| | logger = setup_logger() |
| |
|