Files

82 lines
2.5 KiB
Python

"""
日志服务 - 记录各类操作日志
实现日志不可删除策略
"""
from ..database import SessionLocal
from ..models import OperationLog, AuditLog, TokenUsageLog
import uuid
class LogService:
@staticmethod
def log_operation(user_id: str, username: str, action: str,
target: str = None, target_id: str = None,
detail: str = None, ip: str = None):
"""记录用户操作日志"""
db = SessionLocal()
try:
log = OperationLog(
id=str(uuid.uuid4()),
user_id=user_id,
username=username,
action=action,
target=target,
target_id=target_id,
detail=detail,
ip=ip,
)
db.add(log)
db.commit()
finally:
db.close()
@staticmethod
def log_audit(admin_id: str, admin_name: str, action: str,
target_type: str = None, target_id: str = None,
detail: str = None):
"""记录管理员审计日志"""
db = SessionLocal()
try:
log = AuditLog(
id=str(uuid.uuid4()),
admin_id=admin_id,
admin_name=admin_name,
action=action,
target_type=target_type,
target_id=target_id,
detail=detail,
)
db.add(log)
db.commit()
finally:
db.close()
@staticmethod
def log_token_usage(user_id: str, model_id: str = None, model_name: str = None,
app_id: str = None, app_name: str = None,
conversation_id: str = None, prompt_tokens: int = 0,
completion_tokens: int = 0, total_tokens: int = 0,
cost: float = 0, trace_id: str = None):
"""记录Token消耗日志"""
db = SessionLocal()
try:
log = TokenUsageLog(
id=str(uuid.uuid4()),
user_id=user_id,
model_id=model_id,
model_name=model_name,
app_id=app_id,
app_name=app_name,
conversation_id=conversation_id,
prompt_tokens=prompt_tokens,
completion_tokens=completion_tokens,
total_tokens=total_tokens,
cost=cost,
trace_id=trace_id,
)
db.add(log)
db.commit()
finally:
db.close()