Browse Source

添加日志处理接口

liyan 1 year ago
parent
commit
2bf91115ae

+ 22 - 0
watermark_generate/controller/log_controller.py

@@ -0,0 +1,22 @@
+import logging
+
+from flask import Blueprint, request
+from watermark_generate.tools.logger_tool import handler
+
+log_controller = Blueprint('log_controller', __name__)
+
+
+@log_controller.route('/log', methods=['POST'])
+def log_post():
+    level = request.json['level']
+    size = request.json['size']
+    if level == 'debug':
+        handler.setLevel(logging.DEBUG)
+    if level == 'info':
+        handler.setLevel(logging.INFO)
+    if level == 'warning':
+        handler.setLevel(logging.WARN)
+    if level == 'error':
+        handler.setLevel(logging.ERROR)
+    handler.maxBytes = size * 1024
+    return {'code': 0, 'msg': 'ok'}

+ 10 - 2
watermark_generate/controller/secret_controller.py

@@ -4,6 +4,7 @@
 from flask import Blueprint, request
 from watermark_generate.tools import secret_func
 from watermark_generate.domain import *
+from watermark_generate.tools import logger_tool
 
 secret = Blueprint('secret', __name__)
 
@@ -14,12 +15,19 @@ def gen_crypto_label():
     生成密码标签
     :return: 密码标签
     """
+    logger = logger_tool.logger
+    logger.debug(f'调用生成密码标签接口,request:{request.json}')
     gen_label_form = GenLabelFormSchema().load(request.json)  # 反序列化 JSON 数据为对象
     info = gen_label_form.info
     owner = info.owner
     model = info.model
-    secret = secret_func.get_secret(512)
-    cert = ''
+    try:
+        secret = secret_func.get_secret(512)
+        cert = ''
+    except Exception as e:
+        logger.error(e)
+        return {'code': -1, 'msg': '生成密码标签失败'}
+    logger.debug('密码标签生成成功')
     resp = GenLabelResp(code=0, msg='ok', label=secret, cert=cert)
     return GenLabelRespSchema().dump(resp)
 

+ 2 - 0
watermark_generate/run.py

@@ -1,12 +1,14 @@
 from flask import Flask
 from watermark_generate.controller.secret_controller import secret
 from watermark_generate.controller.dataset_controller import dataset
+from watermark_generate.controller.log_controller import log_controller
 
 app = Flask(__name__)
 
 # 注册路由
 app.register_blueprint(secret)
 app.register_blueprint(dataset)
+app.register_blueprint(log_controller)
 
 # 运行
 if __name__ == '__main__':

+ 19 - 0
watermark_generate/tools/logger_tool.py

@@ -0,0 +1,19 @@
+# 设置初始的日志格式和大小
+import logging
+from logging.handlers import RotatingFileHandler
+
+log_format = '%(asctime)s - %(levelname)s - [%(filename)s] - [%(funcName)s] - line:[%(lineno)d] - %(message)s'
+log_size = 1024 * 1024  # 默认为 1MB
+log_level = logging.INFO
+# 配置日志
+logging.basicConfig(level=logging.DEBUG, format=log_format)
+
+# 获取默认的 logger
+logger = logging.getLogger(__name__)
+
+# 添加 RotatingFileHandler,设置日志文件大小限制
+handler = RotatingFileHandler('app.log', maxBytes=log_size, backupCount=1)
+handler.setFormatter(logging.Formatter(log_format))
+logger.addHandler(handler)
+for handler in logger.handlers:
+    handler.setLevel(log_level)