chore: add upload log

This commit is contained in:
2024-10-21 16:53:04 +08:00
parent 8009e08249
commit f32efcd035
2 changed files with 26 additions and 3 deletions
+3 -2
View File
@@ -1,4 +1,5 @@
__pycache__
uploads
*.csv *.csv
*.log
__pycache__
temp* temp*
uploads
+23 -1
View File
@@ -1,7 +1,9 @@
from flask import Flask, request, send_from_directory, abort, jsonify from flask import Flask, request, send_from_directory, abort, jsonify
from logging.handlers import RotatingFileHandler
from sort_rule import sort_by_rule from sort_rule import sort_by_rule
import csv import csv
import datetime import datetime
import logging
import os import os
import re import re
@@ -15,6 +17,17 @@ project_deadlines = {
UPLOAD_FOLDER = "./uploads" UPLOAD_FOLDER = "./uploads"
os.makedirs(UPLOAD_FOLDER, exist_ok=True) os.makedirs(UPLOAD_FOLDER, exist_ok=True)
# 配置日志记录器
handler = RotatingFileHandler("score_upload.log", maxBytes=1_000_000, backupCount=5)
handler.setLevel(logging.INFO) # 设置日志级别
formatter = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s") # 日志格式
handler.setFormatter(formatter)
# 添加处理器到日志记录器
logger = logging.getLogger()
logger.setLevel(logging.INFO)
logger.addHandler(handler)
# @app.route("/upload", methods=["POST"]) # @app.route("/upload", methods=["POST"])
# def upload_file(): # def upload_file():
# if "file" not in request.files: # if "file" not in request.files:
@@ -106,6 +119,7 @@ def is_past_deadline(project):
def upload_score(): def upload_score():
try: try:
data = request.json data = request.json
logging.info(f"Received data: {data}")
if ( if (
"name" in data "name" in data
and "id" in data and "id" in data
@@ -113,9 +127,10 @@ def upload_score():
and "details" in data and "details" in data
and "running_time" in data and "running_time" in data
and "time" in data and "time" in data
and "project" in data # 新增项目名称字段 and "project" in data
): ):
if not re.fullmatch(r"^\d{12}$", data["id"]): if not re.fullmatch(r"^\d{12}$", data["id"]):
logging.warning(f"Invalid ID format: {data["id"]}, RAW data: {data}")
return jsonify({"message": "学号不合规,不记录成绩!"}), 400 return jsonify({"message": "学号不合规,不记录成绩!"}), 400
elif ( elif (
data["name"] == "test_name" data["name"] == "test_name"
@@ -123,18 +138,25 @@ def upload_score():
or data["name"] == "name" or data["name"] == "name"
or data["name"] == "" or data["name"] == ""
): ):
logging.warning(f"Invalid name: {data["name"]}, RAW data: {data}")
return jsonify({"message": "姓名不合规,不记录成绩!"}), 400 return jsonify({"message": "姓名不合规,不记录成绩!"}), 400
# 检查截止时间 # 检查截止时间
if is_past_deadline(data["project"]): if is_past_deadline(data["project"]):
logging.warning(
f"Past deadline for project: {data["project"]}, RAW data: {data}"
)
return jsonify({"message": "已过成绩提交截止时间,上传成绩失败!"}), 403 return jsonify({"message": "已过成绩提交截止时间,上传成绩失败!"}), 403
data["details"] = data["details"].replace("\n", "<br>") data["details"] = data["details"].replace("\n", "<br>")
write_to_csv(data, data["project"]) write_to_csv(data, data["project"])
logging.info(f"Score uploaded successfully for ID: {data["id"]}")
return jsonify({"message": "上传成绩成功!"}), 200 return jsonify({"message": "上传成绩成功!"}), 200
else: else:
logging.error(f"Data format error: {data}")
return jsonify({"message": "数据格式错误!"}), 400 return jsonify({"message": "数据格式错误!"}), 400
except Exception as e: except Exception as e:
logging.error("Exception occurred: %s", str(e), exc_info=True)
return jsonify({"message": f"错误 {str(e)}"}), 500 return jsonify({"message": f"错误 {str(e)}"}), 500