You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
iTi-Flask/iti/applications/models/sys/sys_log.py

55 lines
1.9 KiB
Python

from iti.applications.extensions import db
from apiflask.fields import String, DateTime, Boolean, Float, Enum
from iti.applications.common.crud import BaseModelMixin
from iti.applications.common.utils import BaseSchema
from iti.applications.common.enums import LogType
class SysLog(BaseModelMixin):
"""
系统日志表
"""
__tablename__ = "sys_log"
name = db.Column(db.String(100), comment="操作名称")
method = db.Column(db.String(10), comment="请求方法")
user_id = db.Column(db.String(36), comment="用户ID")
path = db.Column(db.String(255), comment="请求路径")
ip = db.Column(db.String(255), comment="IP地址")
user_agent = db.Column(db.Text, comment="用户代理")
headers = db.Column(db.Text, comment="请求头")
query_params = db.Column(db.Text, comment="请求参数")
body_params = db.Column(db.Text, comment="请求体参数")
execution_time = db.Column(db.Float, comment="执行时间(毫秒)")
response = db.Column(db.Text, comment="响应结果")
exception = db.Column(db.Text, comment="异常信息")
success = db.Column(db.Boolean, comment="是否成功")
desc = db.Column(db.Text, comment="描述")
type = db.Column(
db.Enum(LogType, values_callable=lambda x: [e.value for e in x]),
nullable=False,
default=LogType.OPERATION.value,
comment="日志类型",
)
class LogSchema(BaseSchema):
id = String()
name = String()
method = String()
user_id = String()
path = String()
ip = String()
user_agent = String()
headers = String()
query_params = String()
body_params = String()
execution_time = Float()
response = String()
exception = String()
success = Boolean()
desc = String()
type = Enum(LogType, by_value=True)
created_at = DateTime(format="%Y-%m-%d %H:%M:%S")
updated_at = DateTime(format="%Y-%m-%d %H:%M:%S")