Python 后端提交
Python 后端(FastAPI + FastMCP + ...)的初始版本号设定为 0.1.0,这是 uv 在 pypriject.toml 里给我自动设置的,我觉得有道理。
This commit is contained in:
42
njupt_api/baselib/logger.py
Normal file
42
njupt_api/baselib/logger.py
Normal file
@@ -0,0 +1,42 @@
|
||||
import sys
|
||||
from collections import deque
|
||||
|
||||
from loguru import logger
|
||||
|
||||
logger.remove()
|
||||
logger.add(
|
||||
sys.stdout,
|
||||
level="DEBUG",
|
||||
colorize=True,
|
||||
)
|
||||
logger.add("data/app.log", rotation="10 MB", retention="7 days") # 文件日志
|
||||
|
||||
log_buffer = deque(maxlen=1000)
|
||||
|
||||
|
||||
class LogRecord:
|
||||
log_counter = 0
|
||||
|
||||
def __init__(self, message: str) -> None:
|
||||
self.id = LogRecord.log_counter
|
||||
self.message = message
|
||||
|
||||
LogRecord.log_counter += 1
|
||||
|
||||
|
||||
def log_record_serialize(record: LogRecord) -> dict:
|
||||
return {
|
||||
"id": record.id,
|
||||
"message": record.message,
|
||||
}
|
||||
|
||||
|
||||
def memory_sink(message: str) -> None:
|
||||
"""向自定义缓冲区写入日志,供 WebUI 获取
|
||||
:param message: 'loguru._handler.Message'
|
||||
"""
|
||||
log_entry = LogRecord(message=message)
|
||||
log_buffer.append(log_entry)
|
||||
|
||||
|
||||
logger.add(sink=memory_sink, level="DEBUG", colorize=True)
|
||||
Reference in New Issue
Block a user