62 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			62 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								# logging_config.py
							 | 
						||
| 
								 | 
							
								import logging
							 | 
						||
| 
								 | 
							
								import logging.config
							 | 
						||
| 
								 | 
							
								from pathlib import Path
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# 确保 logs 目录存在
							 | 
						||
| 
								 | 
							
								log_dir = Path("logs")
							 | 
						||
| 
								 | 
							
								log_dir.mkdir(exist_ok=True)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								LOGGING_CONFIG = {
							 | 
						||
| 
								 | 
							
								    "version": 1,
							 | 
						||
| 
								 | 
							
								    "disable_existing_loggers": False,
							 | 
						||
| 
								 | 
							
								    "formatters": {
							 | 
						||
| 
								 | 
							
								        "default": {
							 | 
						||
| 
								 | 
							
								            "format": "%(asctime)s - %(name)s - %(levelname)s - %(filename)s:%(lineno)d - %(message)s",
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								        "detailed": {
							 | 
						||
| 
								 | 
							
								            "format": "%(asctime)s - %(name)s - %(levelname)s - %(funcName)s - %(message)s",
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    "handlers": {
							 | 
						||
| 
								 | 
							
								        "console": {
							 | 
						||
| 
								 | 
							
								            "class": "logging.StreamHandler",
							 | 
						||
| 
								 | 
							
								            "level": "INFO",
							 | 
						||
| 
								 | 
							
								            "formatter": "default",
							 | 
						||
| 
								 | 
							
								            "stream": "ext://sys.stdout"
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								        "file": {
							 | 
						||
| 
								 | 
							
								            "class": "logging.handlers.RotatingFileHandler",  # 自动轮转
							 | 
						||
| 
								 | 
							
								            "level": "INFO",
							 | 
						||
| 
								 | 
							
								            "formatter": "detailed",
							 | 
						||
| 
								 | 
							
								            "filename": "logs/sqlbot.log",
							 | 
						||
| 
								 | 
							
								            "maxBytes": 10485760,  # 10MB
							 | 
						||
| 
								 | 
							
								            "backupCount": 5,      # 保留5个备份
							 | 
						||
| 
								 | 
							
								            "encoding": "utf8"
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    "root": {
							 | 
						||
| 
								 | 
							
								        "level": "INFO",
							 | 
						||
| 
								 | 
							
								        "handlers": ["console", "file"]
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    "loggers": {
							 | 
						||
| 
								 | 
							
								        "uvicorn": {
							 | 
						||
| 
								 | 
							
								            "level": "INFO",
							 | 
						||
| 
								 | 
							
								            "handlers": ["console", "file"],
							 | 
						||
| 
								 | 
							
								            "propagate": False
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								        "uvicorn.error": {
							 | 
						||
| 
								 | 
							
								            "level": "INFO",
							 | 
						||
| 
								 | 
							
								            "handlers": ["console", "file"],
							 | 
						||
| 
								 | 
							
								            "propagate": False
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								        "uvicorn.access": {
							 | 
						||
| 
								 | 
							
								            "level": "WARNING",  # 只记录警告以上,避免刷屏
							 | 
						||
| 
								 | 
							
								            "handlers": ["file"],  # 只写入文件
							 | 
						||
| 
								 | 
							
								            "propagate": False
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# 应用配置
							 | 
						||
| 
								 | 
							
								logging.config.dictConfig(LOGGING_CONFIG)
							 |