Compare commits

...

10 Commits

Author SHA1 Message Date
132fbb13b7 feat:增加查询博客相邻记录功能 2025-10-12 22:56:31 +08:00
38610aef67 fix:修复fluentbit端口错误的问题 2025-10-09 23:48:12 +08:00
8fc915a6e3 feat:更新host地址 2025-10-09 22:58:49 +08:00
0d32c9b629 fix:解决数据库断线的问题 2025-10-09 09:33:51 +08:00
37b16dc5e5 feat:增加fluentbit日志输出 2025-09-29 14:20:04 +08:00
46ea187d55 fix:修复日志不显示问题 2025-09-29 10:44:56 +08:00
b6617d3db2 feat:更新博客访客记录 2025-09-28 18:42:08 +08:00
bd1d10e0f7 fix:修复博客评论接口 2025-09-26 17:13:01 +08:00
a8fdd04c41 feat:增加fluent日志 2025-09-25 23:33:50 +08:00
5e3dc21ed1 feat:增加博客搜索功能 2025-09-25 17:31:25 +08:00
15 changed files with 1029 additions and 90 deletions

View File

@@ -1,5 +1,7 @@
FROM python:3.12-slim
WORKDIR /app
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' > /etc/timezone
COPY ./packages /app/packages
COPY requirements.txt /app/
RUN pip install --no-cache-dir --no-index --find-links=/app/packages -r requirements.txt

View File

@@ -5,10 +5,12 @@ from sqlalchemy.orm import Session
from config.auth import verify_token
from schemas.blog import BlogResponse, BlogQuery, BlogCategoryResponse, BlogStatsResponse, \
BlogLatestResponse, BlogCommentCreate, BlogCommentResponse, BlogVisitResponse, BlogCreate, BlogUpdate
BlogLatestResponse, BlogCommentCreate, BlogCommentResponse, BlogVisitResponse, BlogCreate, BlogUpdate, \
BlogAdjacentResponse
from schemas.blog_elastic import BlogSearch
from schemas.pagination import PageResult
from config.database import get_db
from service import blog_service
from service import blog_service, blog_elastic_service
router = APIRouter(
prefix="/blog",
@@ -17,6 +19,16 @@ router = APIRouter(
)
@router.get("/sync", summary="同步博客到elastic", response_model=bool)
def sync_all_blog(db: Session = Depends(get_db)):
return blog_elastic_service.sync_all_blog(db)
@router.get("/search", summary="搜索elastic", response_model=List[BlogSearch])
def search_blog(keyword: str):
return blog_elastic_service.search_blog(keyword)
@router.get("/page", summary="分页查询博客", response_model=PageResult[BlogResponse])
def query_blog_by_page(current_page: int = Query(1, ge=1, alias="currentPage", description="当前页码"),
page_size: int = Query(10, ge=1, le=100, alias="pageSize", description="每页数量"),
@@ -30,26 +42,41 @@ def query_blog_by_condition(query: BlogQuery = Depends(),
return blog_service.query_blog_by_condition(db, query)
@router.get("/content/{blog_id}", summary="查询博客内容", response_model=BlogResponse)
@router.get("/{blog_id}/content", summary="查询博客内容", response_model=BlogResponse)
def query_blog_by_id(blog_id: int, db: Session = Depends(get_db)):
return blog_service.query_blog_by_id(db, blog_id)
@router.post("", summary="新增博客内容", response_model=bool)
def add_blog(blog: BlogCreate, db: Session = Depends(get_db), _ = Depends(verify_token)):
def add_blog(blog: BlogCreate, db: Session = Depends(get_db), _=Depends(verify_token)):
return blog_service.add_blog(db, blog)
@router.put("/{blog_id}", summary="更新博客内容", response_model=bool)
def update_blog(blog_id: int, blog: BlogUpdate, db: Session = Depends(get_db), _ = Depends(verify_token)):
def update_blog(blog_id: int, blog: BlogUpdate, db: Session = Depends(get_db), _=Depends(verify_token)):
return blog_service.update_blog(db, blog_id, blog)
@router.delete("/{blog_id}", summary="删除博客内容", response_model=bool)
def delete_blog(blog_id: int, db: Session = Depends(get_db), _ = Depends(verify_token)):
def delete_blog(blog_id: int, db: Session = Depends(get_db), _=Depends(verify_token)):
return blog_service.delete_blog(db, blog_id)
@router.get("/{blog_id}/adjacent", summary="查询相邻博客", response_model=List[BlogAdjacentResponse])
def query_blog_latest(blog_id: int, db: Session = Depends(get_db)):
return blog_service.query_blog_adjacent(db, blog_id)
@router.put("/{blog_id}/comment", summary="新增博客评论", response_model=bool)
def add_blog_comment(blog_id: int, blog_comment: BlogCommentCreate, request: Request, db: Session = Depends(get_db)):
return blog_service.add_blog_comment(db, request, blog_id, blog_comment)
@router.get("/{blog_id}/comment", summary="查询博客评论", response_model=list[BlogCommentResponse])
def query_blog_comment(blog_id: int, db: Session = Depends(get_db)):
return blog_service.query_blog_comment(db, blog_id)
@router.get("/category", summary="查询博客分类", response_model=List[BlogCategoryResponse])
def query_blog_category(db: Session = Depends(get_db)):
return blog_service.query_blog_category(db)
@@ -70,13 +97,3 @@ def query_blog_visit(current_page: int = Query(1, ge=1, alias="currentPage", des
@router.get("/latest", summary="查询近期博客", response_model=list[BlogLatestResponse])
def query_blog_latest(db: Session = Depends(get_db)):
return blog_service.query_blog_latest(db)
@router.put("/comment", summary="新增博客评论", response_model=bool)
def add_blog_comment(blog_comment: BlogCommentCreate, request: Request, db: Session = Depends(get_db)):
return blog_service.add_blog_comment(db, request, blog_comment)
@router.get("/comment/{blog_id}", summary="查询博客评论", response_model=list[BlogCommentResponse])
def query_blog_comment(blog_id: int, db: Session = Depends(get_db)):
return blog_service.query_blog_comment(db, blog_id)

View File

@@ -22,7 +22,7 @@ pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="session")
# 请求上下文
context_sub: ContextVar[str] = ContextVar('sub')
context_sub: ContextVar[str] = ContextVar('sub', default='')
# 获取数据库 加密密码

View File

@@ -4,9 +4,9 @@ from sqlalchemy.orm import sessionmaker
from config.setting import settings
DATABASE_URL = f"mysql+pymysql://{settings.DB_USER}:{settings.DB_PASSWORD}@{settings.DB_HOST}:{settings.DB_PORT}/{settings.DB_NAME}"
DATABASE_URL = f"mysql+pymysql://root:{settings.DB_PASSWORD}@{settings.DB_HOST}:3306/blog"
engine = create_engine(url=DATABASE_URL)
engine = create_engine(url=DATABASE_URL, pool_pre_ping=True, pool_recycle=3600)
# 会话工厂
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)

View File

@@ -1,15 +1,16 @@
from elasticsearch import Elasticsearch
from config.setting import settings
from schemas.blog_elastic import BLOG_MAPPING
from config.logging import logger
ES_HOSTS = "http://14.103.235.151:9200"
ES_HOST = f"http://{settings.ES_HOST}:9200"
ES_USER = "elastic"
ES_PASSWORD = "19940822Cxx"
BLOG_INDEX = "blog"
# 注意Python的elasticsearch的版本要和服务器的一致
es = Elasticsearch(ES_HOSTS, http_auth=(ES_USER, ES_PASSWORD))
es = Elasticsearch(ES_HOST, http_auth=(ES_USER, ES_PASSWORD))
if not es.indices.exists(index=BLOG_INDEX):
es.indices.create(index=BLOG_INDEX, body=BLOG_MAPPING)

View File

@@ -1,10 +1,18 @@
import atexit
import sys
from fluent import sender
from loguru import logger
from pathlib import Path
from config.setting import settings
FLUENTD_HOST = 'host.docker.internal'
FLUENTD_PORT = 24224
TOPIC_TAG = 'blog-service'
# 日志目录
LOG_DIR = Path(__file__).parent.parent.parent / "logs"
LOG_DIR = Path(__file__).parent.parent / "logs"
LOG_DIR.mkdir(exist_ok=True)
# 日志级别
@@ -24,42 +32,87 @@ FILE_FORMAT = (
"{name}:{function}:{line} - {message}"
)
fluent_sender = sender.FluentSender(
tag=TOPIC_TAG,
host=FLUENTD_HOST,
port=FLUENTD_PORT,
buffer_max_size=8 * 1024 * 1024,
timeout=3.0,
retry_timeout=60
)
def log_to_fluent(message):
try:
record = message.record
# 构建结构化日志数据
log_data = {
'topic': TOPIC_TAG,
'timestamp': record['time'].timestamp(),
'level': record['level'].name.lower(),
'message': record['message'],
'source': f"{record['file'].path}:{record['line']}",
'module': record['module'],
'function': record['function'],
'process_id': record['process'].id,
'thread_id': record['thread'].id,
**record['extra']
}
if not fluent_sender.emit(TOPIC_TAG, log_data):
print(f"Fluentd 发送失败: {fluent_sender.last_error}")
except Exception as e:
print(f"日志处理异常: {str(e)}")
# 移除默认处理器
logger.remove()
# 添加控制台处理器
logger.add(
sink="sys.stdout",
sink=sys.stdout,
level=LOG_LEVEL,
format=STDOUT_FORMAT,
colorize=True,
backtrace=True, # 显示完整异常堆栈
diagnose=True, # 显示详细异常信息
diagnose=True, # 显示详细异常信息
)
# 添加文件处理器 - 常规日志
logger.add(
sink=LOG_DIR / "app.log",
level="INFO",
format=FILE_FORMAT,
rotation="10 MB", # 日志文件大小达到10MB时自动分割
retention="7 days", # 保留7天的日志
compression="zip", # 归档时压缩为zip
enqueue=True, # 异步写入
serialize=False, # 不使用JSON格式
log_to_fluent,
level=LOG_LEVEL, # 处理 INFO 及以上级别
format="{message}", # 原始消息(实际使用结构化数据)
backtrace=True, # 启用堆栈回溯
diagnose=True # 显示诊断信息
)
# 添加文件处理器 - 错误日志
logger.add(
sink=LOG_DIR / "error.log",
level="ERROR",
format=FILE_FORMAT,
rotation="10 MB",
retention="30 days",
compression="zip",
enqueue=True,
serialize=False,
)
# # 添加文件处理器 - 常规日志
# logger.add(
# sink=LOG_DIR / "app.log",
# level="INFO",
# format=FILE_FORMAT,
# rotation="10 MB", # 日志文件大小达到10MB时自动分割
# retention="7 days", # 保留7天的日志
# compression="zip", # 归档时压缩为zip
# enqueue=True, # 异步写入
# serialize=False, # 不使用JSON格式
# )
#
# # 添加文件处理器 - 错误日志
# logger.add(
# sink=LOG_DIR / "error.log",
# level="ERROR",
# format=FILE_FORMAT,
# rotation="10 MB",
# retention="30 days",
# compression="zip",
# enqueue=True,
# serialize=False,
# )
atexit.register(fluent_sender.close)
# 导出配置好的logger
__all__ = ["logger"]
__all__ = ["logger"]

View File

@@ -2,13 +2,11 @@ from pydantic_settings import BaseSettings
class Settings(BaseSettings):
DB_HOST: str
DB_PORT: int
DB_USER: str
DB_PASSWORD: str
DB_NAME: str
ENVIRONMENT: str
LOG_LEVEL: str
DB_HOST: str
DB_PASSWORD: str
ES_HOST: str
class Config:
env_file = ".env" # 指定.env文件路径

View File

@@ -9,8 +9,9 @@ from middleware.exceptions import AppException
async def blog_visit_middleware(request: Request, call_next):
# 检查路径是否匹配 /blog/content/{blog_id}
if match := re.match(r"^/blog/content/(\d+)$", request.url.path):
# 检查路径是否匹配
if match := re.match(r"^/blog/(\d+)/content$", request.url.path):
# 获取客户端信息
ip = get_client_ip(request)
user_agent = request.headers.get("User-Agent", "")

View File

@@ -1 +1 @@
fastapi~=0.115.12
fastapi~=0.115.12

View File

@@ -83,8 +83,15 @@ class BlogLatestResponse(BaseModel):
from_attributes = True
class BlogAdjacentResponse(BaseModel):
id: int
title: str
class Config:
from_attributes = True
class BlogCommentCreate(BaseModel):
blogId: int
parentId: int
name: str
website: Optional[str] = None

View File

@@ -12,6 +12,19 @@ class BlogElastic(BaseModel):
createTime: Optional[Union[datetime, str]] = None
updateTime: Optional[Union[datetime, str]] = None
class Config:
from_attributes = True
class BlogSearch(BaseModel):
id: int
title: str
content: str
highlight: str
class Config:
from_attributes = True
BLOG_MAPPING = {
"mappings": {

View File

@@ -1,10 +1,66 @@
from datetime import datetime
from typing import List
from config.logging import logger
from elasticsearch.helpers import bulk
from sqlalchemy import select
from sqlalchemy.orm import Session
from config.elastic import es, BLOG_INDEX
from schemas.blog_elastic import BlogElastic
from config.setting import settings
from models.blog import Blog, BlogCategory, BlogContent
from schemas.blog_elastic import BlogElastic, BlogSearch
def sync_all_blog(db: Session) -> bool:
if settings.ENVIRONMENT == 'dev':
return True
query = select(
Blog.id,
Blog.title,
BlogCategory.name.label("category"),
BlogContent.content.label("content"),
Blog.create_time.label("createTime"),
Blog.update_time.label("updateTime"),
).select_from(Blog).outerjoin(
BlogCategory, Blog.category_id == BlogCategory.id
).outerjoin(
BlogContent, Blog.content_id == BlogContent.id
)
results = db.execute(query).fetchall()
actions = [
{
"_op_type": "index", # 如果存在则更新,不存在则创建
"_index": BLOG_INDEX,
"_id": blog.id,
"_source": {
"title": blog.title,
"category": blog.category,
"content": blog.content.decode("utf-8"),
"createTime": blog.createTime.strftime("%Y-%m-%d %H:%M:%S"),
"updateTime": blog.updateTime.strftime("%Y-%m-%d %H:%M:%S")
}
}
for blog in results
]
success_count, errors = bulk(es, actions=actions)
if errors:
logger.error(f"部分文档同步失败,成功同步 {success_count}")
return False
logger.info(f"成功同步 {success_count} 条博客到 Elasticsearch")
return True
def add_blog_elastic(blog: BlogElastic) -> bool:
if settings.ENVIRONMENT == 'dev':
return True
now = datetime.now()
blog.createTime = now.strftime("%Y-%m-%d %H:%M:%S")
blog.updateTime = now.strftime("%Y-%m-%d %H:%M:%S")
@@ -15,10 +71,14 @@ def add_blog_elastic(blog: BlogElastic) -> bool:
body=blog.model_dump()
)
logger.info(f"成功新增博客 {blog.id} 到 Elasticsearch")
return True
def update_blog_elastic(blog: BlogElastic) -> bool:
if settings.ENVIRONMENT == 'dev':
return True
now = datetime.now()
blog.updateTime = now.strftime("%Y-%m-%d %H:%M:%S")
@@ -28,10 +88,67 @@ def update_blog_elastic(blog: BlogElastic) -> bool:
body=blog.model_dump()
)
logger.info(f"成功修改博客 {blog.id} 到 Elasticsearch")
return True
def delete_blog(blog_id: int) -> bool:
if settings.ENVIRONMENT == 'dev':
return True
es.delete(index=BLOG_INDEX, id=blog_id)
logger.info(f"成功删除博客 {blog_id} 到 Elasticsearch")
return True
def search_blog(keyword: str) -> List[BlogSearch]:
# 构造查询请求
body = {
"query": {
"multi_match": {
"query": keyword,
"fields": ["title^3", "content"],
"type": "phrase"
}
},
"highlight": {
"pre_tags": ["<mark>"],
"post_tags": ["</mark>"],
"fields": {
"title": {},
"content": {
"fragment_size": 150,
"number_of_fragments": 2,
"no_match_size": 100
}
}
},
"_source": ["title", "content"]
}
response = es.search(index=BLOG_INDEX, body=body)
results = []
for hit in response["hits"]["hits"]:
highlight = hit.get("highlight", {})
# 合并所有高亮片段(标题+内容)
all_highlights = []
if "title" in highlight:
all_highlights.extend(highlight["title"])
if "content" in highlight:
all_highlights.extend(highlight["content"])
# 优先使用高亮内容,否则截取内容开头
displayed_content = " ".join(all_highlights) if all_highlights \
else hit["_source"].get("content", "")[:200] + "..."
results.append(BlogSearch(
id=hit["_id"],
title=hit["_source"]["title"],
content=displayed_content,
highlight=" | ".join(all_highlights) # 合并所有高亮片段
))
return results

View File

@@ -1,12 +1,13 @@
from typing import List
from fastapi import Request
from sqlalchemy import select, func, desc, and_
from sqlalchemy import select, func, desc, and_, asc, delete
from sqlalchemy.orm import Session
from models.blog import Blog, BlogCategory, BlogVisit, BlogContent, BlogComment
from schemas.blog import BlogResponse, BlogQuery, BlogCategoryResponse, BlogStatsResponse, \
BlogLatestResponse, BlogCommentCreate, BlogCommentResponse, BlogVisitResponse, BlogCreate, BlogUpdate
BlogLatestResponse, BlogCommentCreate, BlogCommentResponse, BlogVisitResponse, BlogCreate, BlogUpdate, \
BlogAdjacentResponse
from schemas.blog_elastic import BlogElastic
from schemas.pagination import PageResult
from schemas.paginate_query import paginate_query
@@ -82,6 +83,8 @@ def query_blog_by_condition(db: Session, blog_query: BlogQuery) -> List[BlogResp
def query_blog_by_id(db: Session, blog_id: int) -> BlogResponse:
check_blog_exist(db, blog_id)
query = db.query(
Blog.id.label("id"),
Blog.title.label("title"),
@@ -104,8 +107,6 @@ def query_blog_by_id(db: Session, blog_id: int) -> BlogResponse:
).filter(Blog.id == blog_id)
blog = query.first()
if blog[0] is None:
raise AppException("博客不存在")
return BlogResponse.from_orm(blog)
@@ -140,7 +141,8 @@ def add_blog(db: Session, blog: BlogCreate) -> bool:
def add_blog_category(db: Session, category: str) -> int:
db_blog_category = db.query(BlogCategory).filter(BlogCategory.name == category).first()
db_blog_category = db.execute(select(BlogCategory).where(BlogCategory.name == category)).scalar_one_or_none()
if db_blog_category is None:
db_new_blog_category = BlogCategory(name=category)
db.add(db_new_blog_category)
@@ -161,9 +163,7 @@ def add_blog_content(db: Session, content: str) -> int:
def update_blog(db: Session, blog_id: int, blog: BlogUpdate) -> bool:
db_blog = db.query(Blog).filter(Blog.id == blog_id).first()
if not db_blog:
raise AppException("博客不存在")
db_blog = check_blog_exist(db, blog_id)
update_data = blog.model_dump(exclude_unset=True)
@@ -186,7 +186,7 @@ def update_blog(db: Session, blog_id: int, blog: BlogUpdate) -> bool:
def update_blog_category(db: Session, category: str) -> int:
db_blog_category = db.query(BlogCategory).filter(BlogCategory.name == category).first()
db_blog_category = db.execute(select(BlogCategory).where(BlogCategory.name == category)).scalar_one_or_none()
if db_blog_category is None:
return add_blog_category(db, category)
@@ -195,12 +195,9 @@ def update_blog_category(db: Session, category: str) -> int:
def update_blog_content(db: Session, blog_content_id: int, blog_content: str) -> bool:
db_blog_content = db.query(BlogContent).filter(BlogContent.id == blog_content_id).first()
if not db_blog_content:
raise AppException("博客内容不存在")
db_blog_content = check_blog_content_exist(db, blog_content_id)
db_blog_content.content = blog_content.encode('utf-8')
db.commit()
db.refresh(db_blog_content)
@@ -208,24 +205,19 @@ def update_blog_content(db: Session, blog_content_id: int, blog_content: str) ->
def delete_blog(db: Session, blog_id: int) -> bool:
db_blog = db.query(Blog).filter(Blog.id == blog_id).first()
if not db_blog:
raise AppException("博客不存在")
db_blog = check_blog_exist(db, blog_id)
delete_blog_content(db, db_blog.content_id)
db.delete(db_blog)
db.execute(delete(Blog).where(Blog.id == blog_id))
db.commit()
return True
def delete_blog_content(db: Session, blog_content_id: int) -> bool:
db_blog_content = db.query(BlogContent).filter(BlogContent.id == blog_content_id).first()
if not db_blog_content:
raise AppException("博客内容不存在")
check_blog_content_exist(db, blog_content_id)
db.delete(db_blog_content)
db.execute(delete(BlogContent).where(BlogContent.id == blog_content_id))
db.commit()
return True
@@ -265,6 +257,35 @@ def query_blog_latest(db: Session) -> List[BlogLatestResponse]:
return [BlogLatestResponse.from_orm(result) for result in results]
def query_blog_adjacent(db: Session, blog_id: int) -> List[BlogAdjacentResponse]:
check_blog_exist(db, blog_id)
prev_result = db.execute(
select(Blog.id, Blog.title)
.where(Blog.id < blog_id)
.order_by(desc(Blog.id))
.limit(1)
).first()
next_result = db.execute(
select(Blog.id, Blog.title)
.where(Blog.id > blog_id)
.order_by(asc(Blog.id))
.limit(1)
).first()
return [
BlogAdjacentResponse(
id=prev_result[0] if prev_result else 0,
title=prev_result[1] if prev_result else ""
),
BlogAdjacentResponse(
id=next_result[0] if next_result else 0,
title=next_result[1] if next_result else ""
)
]
def add_blog_visit(db: Session, blog_visit: BlogVisit):
db.add(blog_visit)
db.commit()
@@ -304,22 +325,21 @@ def query_blog_comment(db: Session, blog_id: int) -> List[BlogCommentResponse]:
return [BlogCommentResponse.from_orm(result) for result in results]
def add_blog_comment(db: Session, request: Request, blog_comment: BlogCommentCreate) -> bool:
blog = db.query(Blog).filter(Blog.id == blog_comment.blogId).first()
if not blog:
raise AppException("博客不存在")
def add_blog_comment(db: Session, request: Request, blog_id: int, blog_comment: BlogCommentCreate) -> bool:
check_blog_exist(db, blog_id)
if blog_comment.parentId != 0:
parent_comment = db.query(BlogComment).filter(
BlogComment.id == blog_comment.parentId,
BlogComment.blog_id == blog_comment.blogId
).first()
parent_comment = db.execute(
select(BlogComment)
.where(BlogComment.id == blog_comment.parentId)
.where(BlogComment.blog_id == blog_id)
).scalar_one_or_none()
if not parent_comment:
raise AppException("父评论不存在")
db_comment = BlogComment(
blog_id=blog_comment.blogId,
blog_id=blog_id,
parent_id=blog_comment.parentId,
name=blog_comment.name,
website=blog_comment.website,
@@ -334,3 +354,20 @@ def add_blog_comment(db: Session, request: Request, blog_comment: BlogCommentCre
db.refresh(db_comment)
return True
def check_blog_exist(db: Session, blog_id: int) -> Blog:
result = db.execute(select(Blog).where(Blog.id == blog_id)).scalar_one_or_none()
if not result:
raise AppException("博客不存在")
return result
def check_blog_content_exist(db: Session, blog_content_id: int) -> BlogContent:
result = db.execute(select(BlogContent).where(BlogContent.id == blog_content_id)).scalar_one_or_none()
if not result:
raise AppException("博客内容不存在")
return result

View File

@@ -18,6 +18,3 @@ def create(db: Session, username: str, password: str) -> SessionResponse:
access_token=create_token(create_payload(username)),
token_type="Bearer"
)

View File

@@ -858,3 +858,699 @@ category
2025-09-25 00:06:40.224 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: POST http://127.0.0.1:8082/blog
2025-09-25 00:07:13.887 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: POST http://127.0.0.1:8082/blog
2025-09-25 00:07:15.655 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: POST http://127.0.0.1:8082/blog
2025-09-25 11:44:15.070 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/
2025-09-25 11:44:15.071 | WARNING  | middleware.exceptions:global_exception_handler:26 - 响应: 404
2025-09-25 11:44:15.173 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/favicon.ico
2025-09-25 11:44:15.174 | WARNING  | middleware.exceptions:global_exception_handler:26 - 响应: 404
2025-09-25 11:44:20.341 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/docs
2025-09-25 11:44:21.109 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/openapi.json
2025-09-25 11:44:24.250 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/sync
2025-09-25 11:44:24.410 | CRITICAL | middleware.exceptions:global_exception_handler:44 - 未知异常: 1 validation error for BlogElastic
Input should be a valid dictionary or instance of BlogElastic [type=model_type, input_value=(591259203186757, 'MyBati...xe3\x80\x82</font>\n\n'), input_type=Row]
For further information visit https://errors.pydantic.dev/2.11/v/model_type
2025-09-25 11:45:40.490 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/sync
2025-09-25 11:45:40.555 | CRITICAL | middleware.exceptions:global_exception_handler:44 - 未知异常: You must set the config attribute `from_attributes=True` to use from_orm
2025-09-25 11:46:36.849 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/sync
2025-09-25 11:46:36.917 | CRITICAL | middleware.exceptions:global_exception_handler:44 - 未知异常: list.count() takes exactly one argument (0 given)
2025-09-25 11:47:47.735 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/sync
2025-09-25 13:02:12.322 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/sync
2025-09-25 13:07:05.987 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/sync
2025-09-25 13:09:49.942 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/sync
2025-09-25 13:11:29.949 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/sync
2025-09-25 13:12:05.262 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/sync
2025-09-25 13:20:22.224 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/sync
2025-09-25 13:20:22.403 | INFO  | service.blog_elastic_service:sync_all_blog:50 - 成功同步 13 条博客到 Elasticsearch
2025-09-25 13:21:18.623 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/sync
2025-09-25 13:21:18.753 | INFO  | service.blog_elastic_service:sync_all_blog:50 - 成功同步 13 条博客到 Elasticsearch
2025-09-25 13:26:43.033 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/docs
2025-09-25 13:26:43.260 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/openapi.json
2025-09-25 13:26:51.271 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=%E6%A1%86%E6%9E%B6
2025-09-25 13:26:51.272 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '框架'}
2025-09-25 13:27:28.435 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=%E6%A1%86%E6%9E%B6
2025-09-25 13:27:28.436 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '框架'}
2025-09-25 13:28:02.588 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=%E6%A1%86%E6%9E%B6
2025-09-25 13:28:02.589 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '框架'}
2025-09-25 13:28:26.051 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=%E6%A1%86%E6%9E%B6
2025-09-25 13:28:26.051 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '框架'}
2025-09-25 13:29:14.437 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=%E6%A1%86%E6%9E%B6
2025-09-25 13:29:14.438 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '框架'}
2025-09-25 13:30:29.031 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=%E6%A1%86%E6%9E%B6
2025-09-25 13:30:29.031 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '框架'}
2025-09-25 13:34:01.586 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=%E6%A1%86%E6%9E%B6
2025-09-25 13:34:01.587 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '框架'}
2025-09-25 13:34:20.735 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=%E6%A1%86%E6%9E%B6
2025-09-25 13:34:20.735 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '框架'}
2025-09-25 13:38:11.466 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=%E6%A1%86%E6%9E%B6
2025-09-25 13:38:11.466 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '框架'}
2025-09-25 13:38:15.478 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/docs
2025-09-25 13:38:15.663 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/openapi.json
2025-09-25 13:38:20.698 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=%E6%A1%86%E6%9E%B6
2025-09-25 13:38:20.699 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '框架'}
2025-09-25 13:40:27.142 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=%E6%A1%86%E6%9E%B6
2025-09-25 13:40:27.142 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '框架'}
2025-09-25 13:43:19.045 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=Spring
2025-09-25 13:43:19.045 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': 'Spring'}
2025-09-25 13:47:02.900 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-25 13:47:02.946 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-25 13:47:02.946 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-25 13:47:03.063 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-25 13:48:14.267 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-25 13:48:14.271 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-25 13:48:14.272 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-25 13:48:14.291 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-25 13:51:19.419 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/condition?year=2025
2025-09-25 13:51:19.420 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'year': '2025'}
2025-09-25 13:51:21.402 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/category
2025-09-25 13:55:21.251 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-25 13:55:21.252 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/category
2025-09-25 13:55:21.285 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-25 13:55:22.087 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/condition?year=2025
2025-09-25 13:55:22.087 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'year': '2025'}
2025-09-25 13:56:07.890 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-25 13:56:07.891 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/condition?year=2025
2025-09-25 13:56:07.891 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'year': '2025'}
2025-09-25 13:56:07.916 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-25 13:56:10.251 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-25 13:56:10.252 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/condition?year=2025
2025-09-25 13:56:10.252 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'year': '2025'}
2025-09-25 13:56:10.276 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-25 13:57:22.388 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-25 13:57:22.389 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/condition?year=2025
2025-09-25 13:57:22.390 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'year': '2025'}
2025-09-25 13:57:22.428 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-25 13:57:23.517 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-25 13:57:23.519 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/condition?year=2025
2025-09-25 13:57:23.519 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'year': '2025'}
2025-09-25 13:57:23.553 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-25 14:06:40.887 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-25 14:06:40.923 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-25 14:06:42.166 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-25 14:06:42.194 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-25 14:06:47.716 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-25 14:06:47.762 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-25 14:07:28.984 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-25 14:07:29.031 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-25 14:27:09.163 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-25 14:27:09.192 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-25 14:27:26.494 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/condition?year=2025
2025-09-25 14:27:26.494 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'year': '2025'}
2025-09-25 14:29:40.269 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-25 14:29:40.286 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-25 14:30:40.527 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-25 14:30:40.556 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-25 14:30:40.637 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-25 14:30:40.652 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-25 14:31:44.236 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-25 14:31:44.249 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-25 14:34:54.316 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-25 14:34:54.333 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-25 14:34:58.160 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-25 14:34:58.198 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-25 14:35:07.966 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=dd
2025-09-25 14:35:07.967 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': 'dd'}
2025-09-25 14:35:22.188 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=%E6%A1%86%E6%9E%B6
2025-09-25 14:35:22.188 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '框架'}
2025-09-25 14:35:40.918 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-25 14:35:40.956 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-25 14:35:48.222 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=%E6%A1%86%E6%9E%B6
2025-09-25 14:35:48.222 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '框架'}
2025-09-25 14:38:13.931 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-25 14:38:13.970 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-25 14:39:00.228 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-25 14:39:00.242 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-25 14:39:06.442 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-25 14:39:06.491 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-25 14:39:16.760 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-25 14:39:16.861 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-25 14:39:19.369 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=%E6%98%AF
2025-09-25 14:39:19.370 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '是'}
2025-09-25 14:39:26.761 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-25 14:39:26.822 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-25 14:41:32.350 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=%E5%8D%95%E7%8B%AC
2025-09-25 14:41:32.350 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '单独'}
2025-09-25 14:41:35.148 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=%E5%8D%95
2025-09-25 14:41:35.148 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '单'}
2025-09-25 14:41:35.643 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=1
2025-09-25 14:41:35.644 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '1'}
2025-09-25 14:41:47.057 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-25 14:41:47.111 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-25 14:41:48.341 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=%E9%97%AE%E9%97%AE
2025-09-25 14:41:48.341 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '问问'}
2025-09-25 14:41:49.268 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=%E9%97%AE
2025-09-25 14:41:49.269 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '问'}
2025-09-25 14:41:49.447 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=
2025-09-25 14:41:49.447 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': ''}
2025-09-25 14:41:49.875 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=%E6%88%91
2025-09-25 14:41:49.876 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '我'}
2025-09-25 14:41:51.018 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=
2025-09-25 14:41:51.018 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': ''}
2025-09-25 14:41:52.360 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=%E6%A1%86%E6%9E%B6
2025-09-25 14:41:52.360 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '框架'}
2025-09-25 14:41:53.388 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=%E6%A1%86
2025-09-25 14:41:53.389 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '框'}
2025-09-25 14:41:54.484 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=
2025-09-25 14:41:54.484 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': ''}
2025-09-25 14:42:07.744 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=%E6%A1%86%E6%9E%B6
2025-09-25 14:42:07.744 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '框架'}
2025-09-25 14:42:09.517 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=
2025-09-25 14:42:09.518 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': ''}
2025-09-25 14:42:22.609 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=%E7%9A%84
2025-09-25 14:42:22.609 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '的'}
2025-09-25 14:45:38.620 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=%E6%88%91
2025-09-25 14:45:38.620 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '我'}
2025-09-25 14:45:40.520 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=%E4%BD%A0
2025-09-25 14:45:40.520 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '你'}
2025-09-25 14:46:17.291 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=%E6%98%AF
2025-09-25 14:46:17.292 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '是'}
2025-09-25 14:46:26.237 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-25 14:46:26.256 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-25 14:46:29.766 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=%E6%98%AF
2025-09-25 14:46:29.766 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '是'}
2025-09-25 14:46:33.114 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-25 14:46:33.135 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-25 14:46:34.508 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=%E6%98%AF
2025-09-25 14:46:34.508 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '是'}
2025-09-25 14:46:57.691 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-25 14:46:57.737 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-25 14:46:58.594 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=%E6%98%AF
2025-09-25 14:46:58.595 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '是'}
2025-09-25 14:47:04.608 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-25 14:47:04.627 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-25 14:47:06.837 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-25 14:47:06.896 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-25 14:47:08.113 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=%E6%98%AF
2025-09-25 14:47:08.113 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '是'}
2025-09-25 14:48:59.162 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-25 14:48:59.223 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-25 14:49:00.880 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=%E6%98%AF
2025-09-25 14:49:00.880 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '是'}
2025-09-25 14:51:02.407 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-25 14:51:02.433 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-25 14:51:03.966 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=%E6%98%AF
2025-09-25 14:51:03.966 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '是'}
2025-09-25 14:53:00.197 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-25 14:53:00.251 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-25 14:53:01.530 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=%E6%98%AF
2025-09-25 14:53:01.530 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '是'}
2025-09-25 14:54:26.078 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-25 14:54:26.186 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-25 14:54:30.854 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=%E6%98%AF
2025-09-25 14:54:30.854 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '是'}
2025-09-25 14:54:42.278 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-25 14:54:42.306 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-25 14:54:43.851 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=%E6%98%AF
2025-09-25 14:54:43.851 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '是'}
2025-09-25 14:56:17.101 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=%E6%A1%86%E6%9E%B6
2025-09-25 14:56:17.102 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '框架'}
2025-09-25 14:56:22.995 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/:591259203186757
2025-09-25 14:56:22.997 | WARNING  | middleware.exceptions:global_exception_handler:26 - 响应: 422
2025-09-25 14:56:30.426 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-25 14:56:30.426 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-25 14:56:54.085 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-25 14:56:54.159 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-25 14:56:56.193 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=%E6%A1%86%E6%9E%B6
2025-09-25 14:56:56.193 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '框架'}
2025-09-25 14:57:03.178 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-25 14:57:03.194 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-25 14:57:04.483 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-25 14:57:04.483 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-25 14:57:07.503 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/631305371107398
2025-09-25 14:57:07.541 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/comment/631305371107398
2025-09-25 14:57:29.779 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-25 14:57:29.780 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-25 14:57:29.780 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-25 14:57:29.801 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-25 14:57:31.697 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/631305371107398
2025-09-25 14:57:31.716 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/comment/631305371107398
2025-09-25 14:57:39.093 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=%E6%A1%86%E6%9E%B6
2025-09-25 14:57:39.093 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '框架'}
2025-09-25 14:57:40.678 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/676185644712005
2025-09-25 14:57:40.693 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/comment/676185644712005
2025-09-25 14:58:06.963 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=%E4%BD%A0
2025-09-25 14:58:06.963 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '你'}
2025-09-25 14:59:27.179 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-25 14:59:27.241 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-25 14:59:31.417 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/condition?year=2025
2025-09-25 14:59:31.418 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'year': '2025'}
2025-09-25 14:59:34.828 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=%E4%BD%A0%E5%A5%BD
2025-09-25 14:59:34.829 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '你好'}
2025-09-25 14:59:35.815 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=%E4%BD%A0
2025-09-25 14:59:35.815 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '你'}
2025-09-25 14:59:37.358 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/condition?year=2025
2025-09-25 14:59:37.359 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'year': '2025'}
2025-09-25 14:59:49.964 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-25 14:59:50.045 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-25 14:59:50.680 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/condition?year=2025
2025-09-25 14:59:50.680 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'year': '2025'}
2025-09-25 14:59:52.852 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=%E4%BD%A0
2025-09-25 14:59:52.853 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '你'}
2025-09-25 14:59:54.375 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/condition?year=2025
2025-09-25 14:59:54.375 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'year': '2025'}
2025-09-25 15:00:09.535 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-25 15:00:09.536 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-25 22:49:58.584 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/
2025-09-25 22:50:00.691 | WARNING  | middleware.exceptions:global_exception_handler:26 - 响应: 404
2025-09-25 22:50:02.808 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/docs
2025-09-25 22:50:09.497 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/openapi.json
2025-09-25 22:50:16.478 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-25 22:50:18.553 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-25 22:50:20.723 | CRITICAL | middleware.exceptions:global_exception_handler:38 - 数据库异常: (pymysql.err.OperationalError) (2003, "Can't connect to MySQL server on 'host.docker.internal' ([Errno 11001] getaddrinfo failed)")
(Background on this error at: https://sqlalche.me/e/20/e3q8)
2025-09-25 22:50:51.042 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-25 22:50:53.126 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-25 22:50:55.241 | CRITICAL | middleware.exceptions:global_exception_handler:38 - 数据库异常: (pymysql.err.OperationalError) (1045, "Access denied for user 'root'@'localhost' (using password: YES)")
(Background on this error at: https://sqlalche.me/e/20/e3q8)
2025-09-25 22:51:09.586 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-25 22:51:11.676 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-25 22:52:58.339 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-25 22:53:01.352 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-25 22:54:16.612 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-25 22:54:16.622 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-25 22:57:08.357 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-25 22:57:08.357 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-25 22:57:58.433 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-25 22:57:58.433 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-25 23:03:57.445 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-25 23:03:57.445 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-25 23:04:29.198 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-25 23:04:29.198 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-25 23:11:27.170 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-25 23:11:27.171 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-25 23:17:14.162 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-25 23:17:14.164 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-25 23:18:42.029 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-25 23:18:42.029 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-25 23:20:09.630 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-25 23:20:09.668 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-25 23:22:00.941 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-25 23:22:00.942 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-26 16:03:42.517 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-26 16:03:42.537 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-26 16:03:42.537 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-26 16:03:42.703 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-26 16:09:59.841 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-26 16:09:59.842 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-26 16:09:59.842 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-26 16:09:59.888 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-26 16:11:17.113 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/631305371107398
2025-09-26 16:11:17.180 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/comment/631305371107398
2025-09-26 16:11:40.642 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-26 16:11:40.702 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/631305371107398
2025-09-26 16:11:40.714 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/comment/631305371107398
2025-09-26 16:11:40.814 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-26 16:13:45.814 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/comment
2025-09-26 16:13:45.816 | WARNING  | middleware.exceptions:global_exception_handler:26 - 响应: 401
2025-09-26 16:13:46.054 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-26 16:13:46.057 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-26 16:13:46.058 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-26 16:13:46.071 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-26 16:13:52.974 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/631305371107398
2025-09-26 16:13:53.166 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/comment/631305371107398
2025-09-26 16:14:06.274 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/comment
2025-09-26 16:14:06.275 | WARNING  | middleware.exceptions:global_exception_handler:26 - 响应: 401
2025-09-26 16:14:06.935 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-26 16:14:06.944 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-26 16:14:06.945 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-26 16:14:06.963 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-26 16:14:57.178 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/631305371107398
2025-09-26 16:14:57.374 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/comment/631305371107398
2025-09-26 16:17:51.796 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/docs
2025-09-26 16:17:52.677 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/openapi.json
2025-09-26 16:19:00.119 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/comment
2025-09-26 16:19:00.122 | WARNING  | middleware.exceptions:global_exception_handler:26 - 响应: 401
2025-09-26 16:21:45.316 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-26 16:21:45.316 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-26 16:24:29.117 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/comment
2025-09-26 16:24:29.138 | WARNING  | middleware.exceptions:global_exception_handler:26 - 响应: 401
2025-09-26 16:28:18.003 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/docs
2025-09-26 16:28:18.241 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/openapi.json
2025-09-26 16:28:28.641 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/comment
2025-09-26 16:28:28.644 | WARNING  | middleware.exceptions:global_exception_handler:26 - 响应: 401
2025-09-26 16:29:07.075 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/comment/0
2025-09-26 16:29:15.253 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/comment/631305371107398
2025-09-26 16:34:33.316 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/docs
2025-09-26 16:34:33.446 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/openapi.json
2025-09-26 16:34:34.795 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/docs
2025-09-26 16:34:34.853 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/openapi.json
2025-09-26 16:34:35.378 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/docs
2025-09-26 16:34:35.437 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/openapi.json
2025-09-26 16:34:38.667 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/comment
2025-09-26 16:34:38.670 | WARNING  | middleware.exceptions:global_exception_handler:26 - 响应: 401
2025-09-26 16:36:52.062 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/comment
2025-09-26 16:36:52.106 | WARNING  | middleware.exceptions:global_exception_handler:26 - 响应: 422
2025-09-26 16:37:21.688 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/comment
2025-09-26 16:37:21.724 | WARNING  | middleware.exceptions:global_exception_handler:26 - 响应: 422
2025-09-26 16:51:46.676 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/comment
2025-09-26 16:51:46.678 | WARNING  | middleware.exceptions:global_exception_handler:26 - 响应: 422
2025-09-26 16:52:11.046 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/docs
2025-09-26 16:52:11.200 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/openapi.json
2025-09-26 16:52:17.101 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/comment
2025-09-26 16:52:17.106 | WARNING  | middleware.exceptions:global_exception_handler:26 - 响应: 422
2025-09-26 16:52:44.449 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/comment
2025-09-26 16:52:44.466 | WARNING  | middleware.exceptions:global_exception_handler:26 - 响应: 422
2025-09-26 16:53:10.411 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/comment
2025-09-26 16:53:10.449 | WARNING  | middleware.exceptions:global_exception_handler:26 - 响应: 422
2025-09-26 16:54:22.147 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/comment
2025-09-26 16:54:22.193 | WARNING  | middleware.exceptions:global_exception_handler:26 - 响应: 422
2025-09-26 16:54:23.444 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/comment
2025-09-26 16:54:23.447 | WARNING  | middleware.exceptions:global_exception_handler:26 - 响应: 422
2025-09-26 17:04:46.164 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-26 17:04:46.298 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/631305371107398
2025-09-26 17:04:46.300 | WARNING  | middleware.exceptions:global_exception_handler:26 - 响应: 404
2025-09-26 17:04:46.371 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-26 17:04:46.425 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/631305371107398
2025-09-26 17:04:46.426 | WARNING  | middleware.exceptions:global_exception_handler:26 - 响应: 404
2025-09-26 17:04:46.428 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-26 17:04:46.449 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-26 17:05:24.904 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-26 17:05:24.955 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/631305371107398
2025-09-26 17:05:24.956 | WARNING  | middleware.exceptions:global_exception_handler:26 - 响应: 404
2025-09-26 17:05:24.970 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-26 17:05:55.692 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-26 17:05:55.745 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/631305371107398
2025-09-26 17:05:55.746 | WARNING  | middleware.exceptions:global_exception_handler:26 - 响应: 404
2025-09-26 17:05:55.761 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-26 17:06:06.166 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-26 17:06:06.219 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/631305371107398
2025-09-26 17:06:06.220 | WARNING  | middleware.exceptions:global_exception_handler:26 - 响应: 404
2025-09-26 17:06:06.233 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-26 17:06:19.470 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-26 17:06:19.476 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/631305371107398/content
2025-09-26 17:06:19.522 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-26 17:06:19.548 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/631305371107398/comment
2025-09-26 17:06:27.196 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/631305371107398/comment
2025-09-26 17:06:27.276 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/631305371107398/content
2025-09-26 17:06:27.286 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/631305371107398/comment
2025-09-26 17:07:38.586 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-26 17:07:38.586 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-26 17:07:40.042 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-26 17:07:40.043 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-26 17:07:40.044 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-26 17:07:40.062 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-26 17:07:42.579 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/631305371107398/content
2025-09-26 17:07:42.831 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/631305371107398/comment
2025-09-26 17:07:47.930 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/631305371107398/comment
2025-09-26 17:07:48.043 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/631305371107398/content
2025-09-26 17:07:48.053 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/631305371107398/comment
2025-09-26 17:08:11.749 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/631305371107398/comment
2025-09-26 17:08:11.808 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/631305371107398/content
2025-09-26 17:08:11.817 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/631305371107398/comment
2025-09-26 17:08:36.260 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/631305371107398/comment
2025-09-26 17:08:36.355 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/631305371107398/content
2025-09-26 17:08:36.365 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/631305371107398/comment
2025-09-26 17:10:27.472 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-26 17:10:27.473 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/631305371107398/content
2025-09-26 17:10:27.495 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-26 17:10:27.498 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/631305371107398/comment
2025-09-26 17:11:25.564 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-26 17:11:25.565 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/631305371107398/content
2025-09-26 17:11:25.645 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/631305371107398/comment
2025-09-26 17:11:25.646 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-26 17:11:33.777 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/631305371107398/comment
2025-09-26 17:11:33.850 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/631305371107398/content
2025-09-26 17:11:33.859 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/631305371107398/comment
2025-09-26 17:11:52.370 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/631305371107398/comment
2025-09-26 17:11:52.449 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/631305371107398/content
2025-09-26 17:11:52.459 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/631305371107398/comment
2025-09-28 16:45:56.908 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-28 16:45:56.937 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 16:45:56.938 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 16:45:57.069 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-28 16:46:03.071 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/category
2025-09-28 16:46:03.776 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 16:46:03.777 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 16:46:05.951 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/631305371107398/content
2025-09-28 16:46:05.987 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/631305371107398/comment
2025-09-28 16:46:31.595 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 16:46:31.595 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 16:46:33.006 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-28 16:46:33.006 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 16:46:33.007 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 16:46:33.022 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-28 16:47:12.257 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-28 16:47:12.258 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 16:47:12.258 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 16:47:12.303 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-28 16:47:14.784 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/631305371107398/content
2025-09-28 16:47:14.902 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/631305371107398/comment
2025-09-28 16:47:18.050 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 16:47:18.051 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 16:47:19.668 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-28 16:47:19.669 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 16:47:19.670 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 16:47:19.692 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-28 16:47:29.187 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-28 16:47:29.203 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 16:47:29.204 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 16:47:29.272 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-28 16:47:31.419 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/631305371107398/content
2025-09-28 16:47:31.443 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/631305371107398/comment
2025-09-28 16:47:59.666 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-28 16:47:59.941 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-28 16:48:07.270 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 16:48:07.271 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 16:48:08.526 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-28 16:48:08.527 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 16:48:08.527 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 16:48:08.545 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-28 16:50:19.796 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-28 16:50:19.895 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-28 16:51:05.805 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-28 16:51:05.920 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/631305371107398/content
2025-09-28 16:51:05.940 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-28 16:51:05.943 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/631305371107398/comment
2025-09-28 16:51:18.654 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: POST http://127.0.0.1:8082/session
2025-09-28 16:51:20.310 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 16:51:20.310 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 16:51:24.671 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/631305371107398
2025-09-28 16:51:24.672 | WARNING  | middleware.exceptions:global_exception_handler:26 - 响应: 404
2025-09-28 16:51:32.384 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 16:51:32.384 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 16:51:34.502 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 16:51:34.502 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 16:51:35.825 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/631305371107398
2025-09-28 16:51:35.825 | WARNING  | middleware.exceptions:global_exception_handler:26 - 响应: 404
2025-09-28 16:51:44.254 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 16:51:44.255 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 16:52:52.544 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 16:52:52.544 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 16:53:05.540 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 16:53:05.541 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 16:53:08.758 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/631305371107398/content
2025-09-28 16:53:08.769 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/0/comment
2025-09-28 16:53:20.253 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: POST http://127.0.0.1:8082/session
2025-09-28 16:53:21.837 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 16:53:21.838 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 16:53:23.683 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/631305371107398/content
2025-09-28 16:53:23.694 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/0/comment
2025-09-28 16:53:27.278 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 16:53:27.278 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 16:53:29.139 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 16:53:29.139 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 16:53:32.161 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-28 16:53:32.207 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/631305371107398/content
2025-09-28 16:53:32.228 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/631305371107398/comment
2025-09-28 16:53:32.229 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-28 16:54:07.019 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: POST http://127.0.0.1:8082/session
2025-09-28 16:54:13.084 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 16:54:13.084 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 16:54:15.572 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/631305371107398/content
2025-09-28 16:54:15.584 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/0/comment
2025-09-28 16:54:18.198 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 16:54:18.198 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 17:00:01.301 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-28 17:00:01.411 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/631305371107398/content
2025-09-28 17:00:01.436 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-28 17:00:01.438 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/631305371107398/comment
2025-09-28 17:00:17.224 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: POST http://127.0.0.1:8082/session
2025-09-28 17:00:18.548 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 17:00:18.549 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 17:00:20.049 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/631305371107398/content
2025-09-28 17:00:20.060 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/0/comment
2025-09-28 17:00:22.313 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 17:00:22.313 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 17:30:42.553 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: POST http://127.0.0.1:8082/session
2025-09-28 17:31:07.575 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 17:31:10.589 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 17:31:13.605 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 17:31:16.615 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 18:18:58.591 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 18:18:58.603 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 18:19:51.206 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: POST http://127.0.0.1:8082/session
2025-09-28 18:19:55.103 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 18:19:55.103 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 18:19:56.439 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/631305371107398/content
2025-09-28 18:19:56.451 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/0/comment
2025-09-28 18:19:58.707 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 18:19:58.708 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 18:20:39.477 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: POST http://127.0.0.1:8082/session
2025-09-28 18:20:39.494 | ERROR  | middleware.exceptions:global_exception_handler:32 - 业务异常: 密码错误 - 详情: None
2025-09-28 18:20:43.789 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: POST http://127.0.0.1:8082/session
2025-09-28 18:20:45.916 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 18:20:45.916 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 18:20:47.327 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/631305371107398/content
2025-09-28 18:20:47.338 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/0/comment
2025-09-28 18:20:48.979 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 18:20:48.980 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 18:24:43.315 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/category
2025-09-28 18:24:44.236 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 18:24:44.237 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 18:24:46.075 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/694197446615109/content
2025-09-28 18:24:46.118 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/0/comment
2025-09-28 18:24:47.897 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 18:24:47.898 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 18:25:50.326 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 18:25:50.326 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 18:25:51.641 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 18:25:51.642 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 18:26:29.481 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 18:26:29.482 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 18:27:28.567 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 18:27:28.567 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 18:28:41.164 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/visit?currentPage=1&pageSize=15
2025-09-28 18:28:41.165 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '15'}
2025-09-28 18:28:43.293 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/visit?currentPage=2&pageSize=15
2025-09-28 18:28:43.293 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '2', 'pageSize': '15'}
2025-09-28 18:28:44.483 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/visit?currentPage=1&pageSize=15
2025-09-28 18:28:44.483 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '15'}
2025-09-28 18:28:47.358 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/visit?currentPage=5&pageSize=15
2025-09-28 18:28:47.358 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '5', 'pageSize': '15'}
2025-09-28 18:28:50.937 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/visit?currentPage=1&pageSize=15
2025-09-28 18:28:50.937 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '15'}
2025-09-28 18:28:56.655 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 18:28:56.656 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 18:29:01.109 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 18:29:01.110 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 18:29:02.991 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 18:29:02.992 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 18:29:04.513 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 18:29:04.513 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 18:29:08.015 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 18:29:08.016 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 18:33:59.860 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 18:33:59.861 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 18:34:01.710 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 18:34:01.710 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 18:35:56.072 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 18:35:56.083 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 18:35:56.116 | CRITICAL | middleware.exceptions:global_exception_handler:44 - 未知异常: 'cryptography' package is required for sha256_password or caching_sha2_password auth methods
2025-09-28 19:19:14.537 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/docs
2025-09-28 19:19:14.734 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/openapi.json
2025-09-28 19:19:18.138 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 19:19:18.139 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 19:19:18.148 | CRITICAL | middleware.exceptions:global_exception_handler:44 - 未知异常: 'cryptography' package is required for sha256_password or caching_sha2_password auth methods
2025-09-28 19:22:51.280 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 19:22:51.281 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 19:22:51.284 | CRITICAL | middleware.exceptions:global_exception_handler:44 - 未知异常: 'cryptography' package is required for sha256_password or caching_sha2_password auth methods
2025-09-28 19:25:30.370 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 19:25:30.371 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 19:25:30.374 | CRITICAL | middleware.exceptions:global_exception_handler:44 - 未知异常: 'cryptography' package is required for sha256_password or caching_sha2_password auth methods
2025-09-28 19:28:28.382 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 19:28:28.382 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 19:28:28.385 | CRITICAL | middleware.exceptions:global_exception_handler:44 - 未知异常: 'cryptography' package is required for sha256_password or caching_sha2_password auth methods
2025-09-28 19:32:53.616 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 19:32:53.617 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 19:32:53.620 | CRITICAL | middleware.exceptions:global_exception_handler:44 - 未知异常: 'cryptography' package is required for sha256_password or caching_sha2_password auth methods
2025-09-28 19:34:44.707 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 19:34:44.707 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 19:34:44.710 | CRITICAL | middleware.exceptions:global_exception_handler:44 - 未知异常: 'cryptography' package is required for sha256_password or caching_sha2_password auth methods
2025-09-28 19:38:22.706 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 19:38:22.707 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 19:38:22.728 | CRITICAL | middleware.exceptions:global_exception_handler:44 - 未知异常: 'cryptography' package is required for sha256_password or caching_sha2_password auth methods
2025-09-28 19:39:50.001 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 19:39:50.001 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 19:39:50.005 | CRITICAL | middleware.exceptions:global_exception_handler:44 - 未知异常: 'cryptography' package is required for sha256_password or caching_sha2_password auth methods
2025-09-28 19:41:24.798 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 19:41:24.799 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 19:41:24.826 | CRITICAL | middleware.exceptions:global_exception_handler:44 - 未知异常: 'cryptography' package is required for sha256_password or caching_sha2_password auth methods
2025-09-28 19:43:01.412 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 19:43:01.412 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 19:43:01.418 | CRITICAL | middleware.exceptions:global_exception_handler:44 - 未知异常: 'cryptography' package is required for sha256_password or caching_sha2_password auth methods
2025-09-28 19:44:15.925 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 19:44:15.925 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 19:44:15.928 | CRITICAL | middleware.exceptions:global_exception_handler:44 - 未知异常: 'cryptography' package is required for sha256_password or caching_sha2_password auth methods
2025-09-28 19:44:27.896 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 19:44:27.897 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 19:44:27.901 | CRITICAL | middleware.exceptions:global_exception_handler:44 - 未知异常: 'cryptography' package is required for sha256_password or caching_sha2_password auth methods
2025-09-28 19:44:28.915 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-28 19:44:28.915 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-28 19:44:28.933 | CRITICAL | middleware.exceptions:global_exception_handler:44 - 未知异常: 'cryptography' package is required for sha256_password or caching_sha2_password auth methods
2025-09-29 09:24:08.763 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/docs
2025-09-29 09:24:08.998 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/openapi.json
2025-09-29 09:24:17.059 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-29 09:24:17.060 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-29 09:46:13.912 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-29 09:46:13.927 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-29 09:47:38.224 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-29 09:47:38.237 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-29 09:50:21.389 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-29 09:50:21.402 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-29 09:50:21.403 | INFO  | service.blog_service:query_blog_by_page:20 - Cxxx
2025-09-29 09:50:35.920 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/docs
2025-09-29 09:50:36.069 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/openapi.json
2025-09-29 09:50:38.521 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-29 09:50:38.521 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-29 09:50:38.523 | INFO  | service.blog_service:query_blog_by_page:20 - Cxxx
2025-09-29 09:51:10.682 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-29 09:51:10.692 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-29 09:51:10.695 | INFO  | service.blog_service:query_blog_by_page:20 - Cxxx
2025-09-29 09:51:13.397 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-29 09:51:13.397 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-29 09:51:13.399 | INFO  | service.blog_service:query_blog_by_page:20 - Cxxx
2025-09-29 09:51:54.908 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-29 09:51:54.930 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-29 09:51:54.933 | INFO  | service.blog_service:query_blog_by_page:20 - Cxxx
2025-09-29 09:51:57.821 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-29 09:51:57.821 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-29 09:51:57.823 | INFO  | service.blog_service:query_blog_by_page:20 - Cxxx
2025-09-29 09:52:17.305 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-29 09:52:17.329 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-29 09:52:17.332 | INFO  | service.blog_service:query_blog_by_page:20 - Cxxx
2025-09-29 09:52:17.333 | ERROR  | service.blog_service:query_blog_by_page:21 - C213123xxx
2025-09-29 09:52:18.672 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-29 09:52:18.672 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-29 09:52:18.674 | INFO  | service.blog_service:query_blog_by_page:20 - Cxxx
2025-09-29 09:52:18.674 | ERROR  | service.blog_service:query_blog_by_page:21 - C213123xxx
2025-09-29 09:54:43.930 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-29 09:54:43.930 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-29 09:54:43.933 | INFO  | service.blog_service:query_blog_by_page:20 - Cxxx
2025-09-29 09:54:43.933 | ERROR  | service.blog_service:query_blog_by_page:21 - C213123xxx
2025-09-29 09:54:46.330 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-29 09:54:46.331 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-29 09:54:46.333 | INFO  | service.blog_service:query_blog_by_page:20 - Cxxx
2025-09-29 09:54:46.333 | ERROR  | service.blog_service:query_blog_by_page:21 - C213123xxx
2025-09-29 09:55:05.250 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-29 09:55:05.250 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-29 09:55:05.252 | INFO  | service.blog_service:query_blog_by_page:20 - Cxxx
2025-09-29 09:55:05.252 | ERROR  | service.blog_service:query_blog_by_page:21 - C213123xxx
2025-09-29 09:55:06.964 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-29 09:55:06.964 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-29 09:55:06.966 | INFO  | service.blog_service:query_blog_by_page:20 - Cxxx
2025-09-29 09:55:06.966 | ERROR  | service.blog_service:query_blog_by_page:21 - C213123xxx
2025-09-29 09:55:07.783 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-29 09:55:07.784 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-29 09:55:07.786 | INFO  | service.blog_service:query_blog_by_page:20 - Cxxx
2025-09-29 09:55:07.786 | ERROR  | service.blog_service:query_blog_by_page:21 - C213123xxx
2025-09-29 09:55:08.244 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-29 09:55:08.244 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-29 09:55:08.246 | INFO  | service.blog_service:query_blog_by_page:20 - Cxxx
2025-09-29 09:55:08.246 | ERROR  | service.blog_service:query_blog_by_page:21 - C213123xxx
2025-09-29 09:55:26.661 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=21323
2025-09-29 09:55:26.661 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '21323'}
2025-09-29 09:55:26.679 | CRITICAL | middleware.exceptions:global_exception_handler:44 - 未知异常: BadRequestError(400, 'search_phase_execution_exception', 'failed to create query: Cannot invoke "org.wltea.analyzer.dic.DictSegment.match(char[], int, int)" because "org.wltea.analyzer.dic.Dictionary.singleton._StopWords" is null')
2025-09-29 09:56:20.140 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=21323
2025-09-29 09:56:20.140 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '21323'}
2025-09-29 09:56:22.378 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=21323
2025-09-29 09:56:22.378 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '21323'}
2025-09-29 09:56:57.739 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=21323
2025-09-29 09:56:57.739 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '21323'}
2025-09-29 09:56:57.755 | CRITICAL | middleware.exceptions:global_exception_handler:44 - 未知异常: BadRequestError(400, 'search_phase_execution_exception', 'failed to create query: Cannot invoke "org.wltea.analyzer.dic.DictSegment.match(char[], int, int)" because "org.wltea.analyzer.dic.Dictionary.singleton._StopWords" is null')
2025-09-29 09:57:24.317 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=21323
2025-09-29 09:57:24.317 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '21323'}
2025-09-29 09:57:24.334 | CRITICAL | middleware.exceptions:global_exception_handler:44 - 未知异常: BadRequestError(400, 'search_phase_execution_exception', 'failed to create query: Cannot invoke "org.wltea.analyzer.dic.DictSegment.match(char[], int, int)" because "org.wltea.analyzer.dic.Dictionary.singleton._StopWords" is null')
2025-09-29 09:57:25.184 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=21323
2025-09-29 09:57:25.184 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '21323'}
2025-09-29 09:57:25.199 | CRITICAL | middleware.exceptions:global_exception_handler:44 - 未知异常: BadRequestError(400, 'search_phase_execution_exception', 'failed to create query: Cannot invoke "org.wltea.analyzer.dic.DictSegment.match(char[], int, int)" because "org.wltea.analyzer.dic.Dictionary.singleton._StopWords" is null')
2025-09-29 09:58:14.518 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/search?keyword=21323
2025-09-29 09:58:14.518 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'keyword': '21323'}
2025-09-29 09:58:14.531 | CRITICAL | middleware.exceptions:global_exception_handler:44 - 未知异常: BadRequestError(400, 'search_phase_execution_exception', 'failed to create query: Cannot invoke "org.wltea.analyzer.dic.DictSegment.match(char[], int, int)" because "org.wltea.analyzer.dic.Dictionary.singleton._StopWords" is null')