|
@@ -47,19 +47,39 @@ def create_app():
|
|
|
|
|
|
def configure_logging(app):
|
|
def configure_logging(app):
|
|
"""Configure logging for the application"""
|
|
"""Configure logging for the application"""
|
|
- env = os.environ.get('FLASK_ENV', 'development')
|
|
|
|
- log_file = f'flask_{env}.log'
|
|
|
|
|
|
+ if not app.config.get('LOG_ENABLED', True):
|
|
|
|
+ return None
|
|
|
|
+
|
|
|
|
+ log_file = app.config.get('LOG_FILE', f'flask_{app.config["FLASK_ENV"]}.log')
|
|
|
|
+ log_level_name = app.config.get('LOG_LEVEL', 'INFO')
|
|
|
|
+ log_level = getattr(logging, log_level_name)
|
|
|
|
+ log_format = app.config.get('LOG_FORMAT', '%(asctime)s - %(levelname)s - %(filename)s - %(funcName)s - %(lineno)s - %(message)s')
|
|
|
|
+ log_encoding = app.config.get('LOG_ENCODING', 'UTF-8')
|
|
|
|
+ log_to_console = app.config.get('LOG_TO_CONSOLE', True)
|
|
|
|
|
|
logger = logging.getLogger("app")
|
|
logger = logging.getLogger("app")
|
|
- handler = logging.FileHandler(log_file, encoding='UTF-8')
|
|
|
|
- handler.setLevel(logging.INFO)
|
|
|
|
- logging_format = logging.Formatter(
|
|
|
|
- '%(asctime)s - %(levelname)s - %(filename)s - %(funcName)s - %(lineno)s - %(message)s')
|
|
|
|
|
|
+ logger.setLevel(log_level)
|
|
|
|
+
|
|
|
|
+ # 清除现有处理器,避免重复
|
|
|
|
+ if logger.handlers:
|
|
|
|
+ logger.handlers.clear()
|
|
|
|
+
|
|
|
|
+ # 文件处理器
|
|
|
|
+ handler = logging.FileHandler(log_file, encoding=log_encoding)
|
|
|
|
+ handler.setLevel(log_level)
|
|
|
|
+ logging_format = logging.Formatter(log_format)
|
|
handler.setFormatter(logging_format)
|
|
handler.setFormatter(logging_format)
|
|
- console = logging.StreamHandler()
|
|
|
|
- console.setLevel(logging.INFO)
|
|
|
|
- console.setFormatter(logging_format)
|
|
|
|
logger.addHandler(handler)
|
|
logger.addHandler(handler)
|
|
- logger.addHandler(console)
|
|
|
|
|
|
|
|
|
|
+ # 控制台处理器
|
|
|
|
+ if log_to_console:
|
|
|
|
+ console = logging.StreamHandler()
|
|
|
|
+ console.setLevel(log_level)
|
|
|
|
+ console.setFormatter(logging_format)
|
|
|
|
+ logger.addHandler(console)
|
|
|
|
+
|
|
|
|
+ # 设置根日志级别,确保其他模块的日志也受控制
|
|
|
|
+ logging.basicConfig(level=log_level, format=log_format)
|
|
|
|
+
|
|
|
|
+ app.logger.info(f"日志配置完成: 级别={log_level_name}, 文件={log_file}")
|
|
return logger
|
|
return logger
|