feat:增加博客处理模块

This commit is contained in:
2025-09-22 19:43:16 +08:00
parent c4674749ce
commit f07b23b825
35 changed files with 763 additions and 28 deletions

2
.env
View File

@@ -1,7 +1,7 @@
LOG_LEVEL=DEBUG
DB_USER=root
DB_PASSWORD=123456
DB_PASSWORD=estun%40medical
#DB_PASSWORD=19940822Cxx%401213
DB_HOST=localhost
#DB_HOST=host.docker.internal

View File

@@ -2,9 +2,10 @@
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.venv" />
<excludeFolder url="file://$MODULE_DIR$/venv" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="jdk" jdkName="Python 3.10 (blog-service)" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

2
.idea/misc.xml generated
View File

@@ -3,5 +3,5 @@
<component name="Black">
<option name="sdkName" value="Python 3.12 (blog-service)" />
</component>
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.12 (blog-service)" project-jdk-type="Python SDK" />
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.10 (blog-service)" project-jdk-type="Python SDK" />
</project>

6
.idea/vcs.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -4,7 +4,7 @@ from fastapi import APIRouter, Depends, Query, Request
from sqlalchemy.orm import Session
from schemas.blog import BlogResponse, BlogQuery, BlogCategoryResponse, BlogStatsResponse, \
BlogLatestResponse, BlogCommentCreate, BlogCommentResponse
BlogLatestResponse, BlogCommentCreate, BlogCommentResponse, BlogVisitResponse, BlogCreate, BlogUpdate
from schemas.pagination import PageResult
from config.database import get_db
from service import blog_service
@@ -34,6 +34,21 @@ 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)):
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)):
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)):
return blog_service.delete_blog(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)
@@ -44,6 +59,13 @@ def query_blog_stats(db: Session = Depends(get_db)):
return blog_service.query_blog_stats(db)
@router.get("/visit", summary="查询博客访问信息", response_model=PageResult[BlogVisitResponse])
def query_blog_visit(current_page: int = Query(1, ge=1, alias="currentPage", description="当前页码"),
page_size: int = Query(10, ge=1, le=100, alias="pageSize", description="每页数量"),
db: Session = Depends(get_db)):
return blog_service.query_blog_visit(db, current_page, page_size)
@router.get("/latest", summary="查询近期博客", response_model=list[BlogLatestResponse])
def query_blog_latest(db: Session = Depends(get_db)):
return blog_service.query_blog_latest(db)
@@ -56,4 +78,4 @@ def add_blog_comment(blog_comment: BlogCommentCreate, request: Request, db: Sess
@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)
return blog_service.query_blog_comment(db, blog_id)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -35,13 +35,13 @@ async def global_exception_handler(request: Request, call_next):
except SQLAlchemyError as e:
# 记录数据库异常
logger.critical(f"数据库异常: {str(e)}", exc_info=True)
#logger.critical(f"数据库异常: {str(e)}", exc_info=True)
return JSONResponse(status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
content={"message": "数据库操作失败", "details": str(e)})
except Exception as e:
# 记录未知异常(带堆栈信息)
logger.critical(f"未知异常: {str(e)}", exc_info=True)
#logger.critical(f"未知异常: {str(e)}", exc_info=True)
return JSONResponse(status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
content={"code": 500, "message": "服务器内部错误", "details": str(e)})

Binary file not shown.

Binary file not shown.

View File

@@ -39,7 +39,7 @@ class AuditBase(IdBase):
create_time = Column(DateTime, nullable=True, default=datetime.now)
create_by = Column(String(255), nullable=True)
update_time = Column(DateTime, nullable=True, onupdate=datetime.now)
update_time = Column(DateTime, nullable=True, default=datetime.now, onupdate=datetime.now)
update_by = Column(String(255), nullable=True)

View File

@@ -10,7 +10,7 @@ from sqlalchemy import (
)
from sqlalchemy.orm import relationship
from models.base import AuditBase
from models.base import AuditBase, IdBase
class Blog(AuditBase):
@@ -58,7 +58,7 @@ class BlogCategory(AuditBase):
)
class BlogContent(AuditBase):
class BlogContent(IdBase):
content = Column(LargeBinary, comment="博客内容")
blog = relationship(

View File

@@ -1,9 +1 @@
fastapi~=0.115.12
sqlalchemy~=2.0.41
pydantic~=2.11.4
PyJWT~=2.10.1
passlib~=1.7.4
loguru~=0.7.3
pydantic-settings~=2.9.1
pymysql~=1.1.1
uvicorn~=0.23.0
fastapi~=0.115.12

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,6 +1,6 @@
from typing import Optional
from pydantic import BaseModel
from pydantic import BaseModel, Field
from datetime import datetime
@@ -13,14 +13,25 @@ class BlogQuery(BaseModel):
year: Optional[int] = None
class BlogResponse(BaseModel):
id: Optional[int] = None
title: Optional[str] = None
topValue: Optional[int] = None
isGreat: Optional[bool] = None
category: Optional[str] = None
summary: Optional[str] = None
class BlogBase(BaseModel):
title: str
topValue: int
isGreat: bool
category: str
content: Optional[str] = None
class BlogCreate(BlogBase):
pass
class BlogUpdate(BlogBase):
pass
class BlogResponse(BlogBase):
id: Optional[int] = None
summary: Optional[str] = None
wordCount: Optional[int] = None
readDuration: Optional[float] = None
visitCount: Optional[int] = None
@@ -49,6 +60,21 @@ class BlogStatsResponse(BaseModel):
wordCount: int
class BlogVisitResponse(BaseModel):
ip: str
os: str
browser: str
uri: str
title: Optional[str] = None
visitTime: datetime
class Config:
from_attributes = True
json_encoders = {
datetime: lambda dt: dt.strftime('%Y-%m-%d %H:%M:%S')
}
class BlogLatestResponse(BaseModel):
id: int
title: str

Binary file not shown.

View File

@@ -6,10 +6,11 @@ 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
BlogLatestResponse, BlogCommentCreate, BlogCommentResponse, BlogVisitResponse, BlogCreate, BlogUpdate
from schemas.pagination import PageResult
from schemas.paginate_query import paginate_query
from middleware.exceptions import AppException
from utils.blog_utils import get_blog_summary, get_word_count, get_read_duration
def query_blog_by_page(db: Session, current_page: int = 1, page_size: int = 10) -> PageResult[BlogResponse]:
@@ -107,6 +108,119 @@ def query_blog_by_id(db: Session, blog_id: int) -> BlogResponse:
return BlogResponse.from_orm(blog)
def add_blog(db: Session, blog: BlogCreate) -> bool:
word_count = get_word_count(blog.content)
db_blog = Blog(
title=blog.title,
top_value=blog.topValue,
is_great=blog.isGreat,
category_id=add_blog_category(db, blog.category),
content_id=add_blog_content(db, blog.content),
summary=get_blog_summary(blog.content),
word_count=word_count,
read_duration=get_read_duration(word_count)
)
db.add(db_blog)
db.commit()
db.refresh(db_blog)
return True
def add_blog_category(db: Session, category: str) -> int:
db_blog_category = db.query(BlogCategory).filter(BlogCategory.name == category).first()
if db_blog_category is None:
db_new_blog_category = BlogCategory(name=category)
db.add(db_new_blog_category)
db.commit()
category_id = db_new_blog_category.id
else:
category_id = db_blog_category.id
return category_id
def add_blog_content(db: Session, content: str) -> int:
db_blog_content = BlogContent(content=content.encode('utf-8'))
db.add(db_blog_content)
db.commit()
return db_blog_content.id
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("博客不存在")
update_data = blog.model_dump(exclude_unset=True)
update_blog_content(db, db_blog.content_id, blog.content)
db_blog.title = update_data["title"]
db_blog.top_value = update_data["topValue"]
db_blog.is_great = update_data["isGreat"]
db_blog.category_id = update_blog_category(db, blog.category)
word_count = get_word_count(blog.content)
db_blog.summary = get_blog_summary(blog.content),
db_blog.word_count = word_count
db_blog.read_duration = get_read_duration(word_count)
db.commit()
db.refresh(db_blog)
return True
def update_blog_category(db: Session, category: str) -> int:
db_blog_category = db.query(BlogCategory).filter(BlogCategory.name == category).first()
if db_blog_category is None:
return add_blog_category(db, category)
else:
return db_blog_category.id
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.content = blog_content.encode('utf-8')
db.commit()
db.refresh(db_blog_content)
return True
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("博客不存在")
delete_blog_content(db, db_blog.content_id)
db.delete(db_blog)
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("博客内容不存在")
db.delete(db_blog_content)
db.commit()
return True
def query_blog_category(db: Session) -> List[BlogCategoryResponse]:
query = select(
BlogCategory.name,
@@ -147,6 +261,21 @@ def add_blog_visit(db: Session, blog_visit: BlogVisit):
db.refresh(blog_visit)
def query_blog_visit(db: Session, current_page: int = 1, page_size: int = 10) -> PageResult[BlogVisitResponse]:
query = select(
BlogVisit.ip,
BlogVisit.os,
BlogVisit.browser,
BlogVisit.uri,
Blog.title,
BlogVisit.create_time.label("visitTime")
).select_from(BlogVisit).outerjoin(
Blog, Blog.id == BlogVisit.blog_id
).order_by(desc(BlogVisit.create_time))
return paginate_query(db, query, current_page, page_size)
def query_blog_comment(db: Session, blog_id: int) -> List[BlogCommentResponse]:
query = select(
BlogComment.id,

View File

@@ -201,3 +201,512 @@
2025-09-21 10:14:26.611 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/comment/685968269635653
2025-09-21 10:14:32.814 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-21 10:14:32.814 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 15:10:32.528 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/category
2025-09-22 15:10:32.538 | 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-22 15:11:20.975 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/category
2025-09-22 15:11:20.979 | 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-22 15:12:52.569 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/category
2025-09-22 15:12:52.572 | 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-22 15:14:34.715 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 15:14:34.715 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 15:14:34.722 | 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-22 15:14:36.797 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/category
2025-09-22 15:14:36.802 | 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-22 15:14:37.098 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 15:14:37.098 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 15:14:37.103 | 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-22 15:15:18.304 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/category
2025-09-22 15:15:18.835 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 15:15:18.836 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 15:16:30.165 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 15:16:30.166 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 15:16:30.291 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 15:16:30.292 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 15:16:45.745 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 15:16:45.745 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 15:17:55.127 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 15:17:55.127 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 15:17:59.863 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 15:17:59.863 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 15:18:01.178 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 15:18:01.178 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 15:18:09.547 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 15:18:09.548 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 15:18:10.775 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 15:18:10.775 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 15:18:11.597 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/category
2025-09-22 15:18:13.368 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 15:18:13.368 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 15:18:14.576 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/631305371107398
2025-09-22 15:18:14.606 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/comment/0
2025-09-22 15:18:21.277 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/631305371107398
2025-09-22 15:18:21.286 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/comment/0
2025-09-22 15:18:32.435 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/631305371107398
2025-09-22 15:18:32.477 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/comment/0
2025-09-22 15:18:34.315 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 15:18:34.315 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 15:18:35.850 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/631305371107398
2025-09-22 15:18:35.861 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/comment/0
2025-09-22 15:18:36.801 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 15:18:36.801 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 15:18:37.910 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/631305371107398
2025-09-22 15:18:37.922 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/comment/0
2025-09-22 15:18:54.032 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 15:18:54.032 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 15:18:55.791 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/631305371107398
2025-09-22 15:18:55.823 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/comment/0
2025-09-22 15:19:07.698 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/631305371107398
2025-09-22 15:19:07.711 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/comment/0
2025-09-22 15:19:09.027 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 15:19:09.027 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 15:19:10.200 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/category
2025-09-22 15:19:49.933 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 15:19:49.933 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 15:19:51.055 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 15:19:51.055 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 15:29:07.461 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/visit?currentPage=1&pageSize=15
2025-09-22 15:29:07.461 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '15'}
2025-09-22 15:29:07.462 | WARNING  | middleware.exceptions:global_exception_handler:26 - 响应: 404
2025-09-22 15:29:09.248 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/visit?currentPage=1&pageSize=15
2025-09-22 15:29:09.248 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '15'}
2025-09-22 15:29:09.249 | WARNING  | middleware.exceptions:global_exception_handler:26 - 响应: 404
2025-09-22 15:29:11.191 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/category
2025-09-22 15:29:11.747 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/visit?currentPage=1&pageSize=15
2025-09-22 15:29:11.747 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '15'}
2025-09-22 15:29:11.748 | WARNING  | middleware.exceptions:global_exception_handler:26 - 响应: 404
2025-09-22 15:29:44.643 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/category
2025-09-22 15:29:45.150 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/visit?currentPage=1&pageSize=15
2025-09-22 15:29:45.150 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '15'}
2025-09-22 15:29:45.151 | WARNING  | middleware.exceptions:global_exception_handler:26 - 响应: 404
2025-09-22 15:30:49.103 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/category
2025-09-22 15:30:49.752 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/visit?currentPage=1&pageSize=15
2025-09-22 15:30:49.753 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '15'}
2025-09-22 15:30:49.754 | WARNING  | middleware.exceptions:global_exception_handler:26 - 响应: 404
2025-09-22 15:30:54.846 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/
2025-09-22 15:30:54.847 | WARNING  | middleware.exceptions:global_exception_handler:26 - 响应: 404
2025-09-22 15:30:54.955 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/favicon.ico
2025-09-22 15:30:54.955 | WARNING  | middleware.exceptions:global_exception_handler:26 - 响应: 404
2025-09-22 15:31:28.200 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/docs
2025-09-22 15:31:38.462 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/docs
2025-09-22 15:31:50.381 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/docs
2025-09-22 15:32:30.627 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/docs
2025-09-22 15:32:58.230 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/docs
2025-09-22 15:33:01.985 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/.well-known/appspecific/com.chrome.devtools.json
2025-09-22 15:33:01.986 | WARNING  | middleware.exceptions:global_exception_handler:26 - 响应: 404
2025-09-22 15:33:06.065 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/docs
2025-09-22 15:33:06.087 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/.well-known/appspecific/com.chrome.devtools.json
2025-09-22 15:33:06.088 | WARNING  | middleware.exceptions:global_exception_handler:26 - 响应: 404
2025-09-22 15:33:30.973 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/docs
2025-09-22 15:33:31.004 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/.well-known/appspecific/com.chrome.devtools.json
2025-09-22 15:33:31.005 | WARNING  | middleware.exceptions:global_exception_handler:26 - 响应: 404
2025-09-22 15:33:31.649 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/openapi.json
2025-09-22 15:33:40.922 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/visit?currentPage=1&pageSize=10
2025-09-22 15:33:40.922 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 15:36:26.310 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/visit?currentPage=1&pageSize=10
2025-09-22 15:36:26.310 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 15:39:34.526 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/visit?currentPage=1&pageSize=10
2025-09-22 15:39:34.526 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 15:42:07.925 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/visit?currentPage=1&pageSize=10
2025-09-22 15:42:07.926 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 15:45:58.186 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/visit?currentPage=1&pageSize=10
2025-09-22 15:45:58.187 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 15:46:55.130 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/visit?currentPage=1&pageSize=10
2025-09-22 15:46:55.131 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 15:47:55.921 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/visit?currentPage=1&pageSize=10
2025-09-22 15:47:55.922 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 15:49:55.638 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/visit?currentPage=1&pageSize=10
2025-09-22 15:49:55.638 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 15:50:42.343 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/visit?currentPage=1&pageSize=10
2025-09-22 15:50:42.343 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 15:54:01.182 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/visit?currentPage=1&pageSize=10
2025-09-22 15:54:01.182 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 15:54:34.738 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/category
2025-09-22 15:54:35.231 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/visit?currentPage=1&pageSize=15
2025-09-22 15:54:35.231 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '15'}
2025-09-22 15:54:35.232 | WARNING  | middleware.exceptions:global_exception_handler:26 - 响应: 404
2025-09-22 15:54:45.865 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/visit?currentPage=1&pageSize=15
2025-09-22 15:54:45.866 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '15'}
2025-09-22 15:54:45.866 | WARNING  | middleware.exceptions:global_exception_handler:26 - 响应: 404
2025-09-22 15:55:11.021 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/visit?currentPage=1&pageSize=15
2025-09-22 15:55:11.021 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '15'}
2025-09-22 15:55:13.232 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/visit?currentPage=1&pageSize=15
2025-09-22 15:55:13.232 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '15'}
2025-09-22 15:55:16.814 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/visit?currentPage=2&pageSize=15
2025-09-22 15:55:16.814 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '2', 'pageSize': '15'}
2025-09-22 15:55:18.058 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/visit?currentPage=3&pageSize=15
2025-09-22 15:55:18.058 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '3', 'pageSize': '15'}
2025-09-22 15:55:19.444 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/visit?currentPage=4&pageSize=15
2025-09-22 15:55:19.444 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '4', 'pageSize': '15'}
2025-09-22 15:55:21.420 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/visit?currentPage=1&pageSize=15
2025-09-22 15:55:21.420 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '15'}
2025-09-22 15:56:21.793 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 15:56:21.794 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 15:56:22.607 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/category
2025-09-22 15:56:23.300 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/visit?currentPage=1&pageSize=15
2025-09-22 15:56:23.301 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '15'}
2025-09-22 15:56:29.178 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 15:56:29.179 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 15:56:34.330 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/631305371107398
2025-09-22 15:56:34.384 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/comment/0
2025-09-22 15:56:37.117 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 15:56:37.117 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 15:56:46.624 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=2&pageSize=10
2025-09-22 15:56:46.624 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '2', 'pageSize': '10'}
2025-09-22 15:56:48.277 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/591259203186757
2025-09-22 15:56:48.288 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/comment/0
2025-09-22 15:57:02.098 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=2&pageSize=10
2025-09-22 15:57:02.098 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '2', 'pageSize': '10'}
2025-09-22 15:57:05.160 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/591259203186757
2025-09-22 15:57:05.187 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/comment/0
2025-09-22 16:01:30.053 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=2&pageSize=10
2025-09-22 16:01:30.053 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '2', 'pageSize': '10'}
2025-09-22 16:11:59.331 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/653526425653317
2025-09-22 16:11:59.344 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/comment/0
2025-09-22 16:12:16.814 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/653526425653317
2025-09-22 16:12:16.851 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/comment/0
2025-09-22 16:12:18.578 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 16:12:18.578 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 16:12:19.373 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/category
2025-09-22 16:12:20.288 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 16:12:20.288 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 16:12:22.093 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/631305371107398
2025-09-22 16:12:22.103 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/comment/0
2025-09-22 16:13:08.148 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/631305371107398
2025-09-22 16:13:08.164 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/comment/0
2025-09-22 16:13:43.129 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/631305371107398
2025-09-22 16:13:43.183 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/comment/0
2025-09-22 16:13:47.295 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/631305371107398
2025-09-22 16:13:47.301 | CRITICAL | middleware.exceptions:global_exception_handler:44 - 未知异常: 'str' object has no attribute '_sa_instance_state'
2025-09-22 16:15:09.734 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/631305371107398
2025-09-22 16:15:09.762 | CRITICAL | middleware.exceptions:global_exception_handler:44 - 未知异常: 'str' object has no attribute '_sa_instance_state'
2025-09-22 16:15:33.888 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/631305371107398
2025-09-22 16:15:50.282 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/631305371107398
2025-09-22 16:15:50.311 | CRITICAL | middleware.exceptions:global_exception_handler:44 - 未知异常: 'str' object has no attribute '_sa_instance_state'
2025-09-22 16:17:18.946 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/631305371107398
2025-09-22 16:17:18.987 | CRITICAL | middleware.exceptions:global_exception_handler:44 - 未知异常: 'str' object has no attribute '_sa_instance_state'
2025-09-22 16:17:50.938 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/631305371107398
2025-09-22 16:17:50.974 | CRITICAL | middleware.exceptions:global_exception_handler:44 - 未知异常: 'str' object has no attribute '_sa_instance_state'
2025-09-22 16:18:07.683 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/631305371107398
2025-09-22 16:18:07.709 | CRITICAL | middleware.exceptions:global_exception_handler:44 - 未知异常: 'str' object has no attribute '_sa_instance_state'
2025-09-22 16:19:03.894 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/631305371107398
2025-09-22 16:19:03.922 | CRITICAL | middleware.exceptions:global_exception_handler:44 - 未知异常: 'str' object has no attribute '_sa_instance_state'
2025-09-22 16:19:30.947 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/631305371107398
2025-09-22 16:19:30.974 | CRITICAL | middleware.exceptions:global_exception_handler:44 - 未知异常: 'str' object has no attribute '_sa_instance_state'
2025-09-22 16:25:21.951 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/631305371107398
2025-09-22 16:25:21.983 | CRITICAL | middleware.exceptions:global_exception_handler:44 - 未知异常: 'str' object has no attribute '_sa_instance_state'
2025-09-22 16:25:24.186 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 16:25:24.186 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 16:25:25.748 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/631305371107398
2025-09-22 16:25:25.759 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/comment/0
2025-09-22 16:25:27.213 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/631305371107398
2025-09-22 16:25:27.218 | CRITICAL | middleware.exceptions:global_exception_handler:44 - 未知异常: 'str' object has no attribute '_sa_instance_state'
2025-09-22 16:28:50.934 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/631305371107398
2025-09-22 16:28:50.990 | CRITICAL | middleware.exceptions:global_exception_handler:44 - 未知异常: 'str' object has no attribute '_sa_instance_state'
2025-09-22 16:31:15.089 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/631305371107398
2025-09-22 16:31:15.117 | CRITICAL | middleware.exceptions:global_exception_handler:44 - 未知异常: 'str' object has no attribute '_sa_instance_state'
2025-09-22 16:31:22.466 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/631305371107398
2025-09-22 16:31:22.509 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/comment/0
2025-09-22 16:31:23.823 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/631305371107398
2025-09-22 16:31:23.827 | CRITICAL | middleware.exceptions:global_exception_handler:44 - 未知异常: 'str' object has no attribute '_sa_instance_state'
2025-09-22 16:31:51.087 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/631305371107398
2025-09-22 16:31:51.119 | CRITICAL | middleware.exceptions:global_exception_handler:44 - 未知异常: 'str' object has no attribute '_sa_instance_state'
2025-09-22 16:32:28.998 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/631305371107398
2025-09-22 16:34:34.904 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/631305371107398
2025-09-22 16:34:34.933 | CRITICAL | middleware.exceptions:global_exception_handler:44 - 未知异常: 'str' object has no attribute '_sa_instance_state'
2025-09-22 16:35:07.569 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/631305371107398
2025-09-22 16:36:08.384 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/category
2025-09-22 16:38:52.539 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/category
2025-09-22 16:38:54.167 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 16:38:54.168 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 16:38:55.866 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/631305371107398
2025-09-22 16:38:55.952 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/comment/0
2025-09-22 16:38:57.139 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/631305371107398
2025-09-22 16:41:18.563 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/631305371107398
2025-09-22 16:41:38.946 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/docs
2025-09-22 16:41:39.149 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/openapi.json
2025-09-22 16:42:24.993 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: POST http://127.0.0.1:8082/blog
2025-09-22 16:42:24.996 | CRITICAL | middleware.exceptions:global_exception_handler:38 - 数据库异常: Class 'schemas.blog.BlogCreate' is not mapped
2025-09-22 16:54:29.509 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: POST http://127.0.0.1:8082/blog
2025-09-22 16:54:54.299 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: POST http://127.0.0.1:8082/blog
2025-09-22 16:55:19.391 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: POST http://127.0.0.1:8082/blog
2025-09-22 16:57:29.815 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: POST http://127.0.0.1:8082/blog
2025-09-22 18:14:20.522 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/222
2025-09-22 18:14:20.552 | ERROR  | middleware.exceptions:global_exception_handler:32 - 业务异常: 博客不存在 - 详情: None
2025-09-22 18:25:32.758 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/222
2025-09-22 18:25:32.805 | ERROR  | middleware.exceptions:global_exception_handler:32 - 业务异常: 博客不存在 - 详情: None
2025-09-22 18:26:28.913 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/722514116330950
2025-09-22 18:27:21.610 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/631305371107398
2025-09-22 18:27:21.641 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/comment/0
2025-09-22 18:27:23.929 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:27:23.929 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:27:27.864 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/category
2025-09-22 18:27:28.948 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/category
2025-09-22 18:27:29.722 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:27:29.722 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:28:52.114 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:28:52.114 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:31:41.995 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:31:41.996 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:31:45.766 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:31:45.766 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:31:48.191 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/category
2025-09-22 18:31:49.043 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:31:49.043 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:31:50.676 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=2&pageSize=10
2025-09-22 18:31:50.676 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '2', 'pageSize': '10'}
2025-09-22 18:31:55.477 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/722514116330950
2025-09-22 18:31:55.589 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/comment/0
2025-09-22 18:31:56.525 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=2&pageSize=10
2025-09-22 18:31:56.526 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '2', 'pageSize': '10'}
2025-09-22 18:31:57.563 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/722514116330950
2025-09-22 18:31:57.578 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/comment/0
2025-09-22 18:32:01.569 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/722514116330950
2025-09-22 18:32:25.403 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/722514116330950
2025-09-22 18:32:25.421 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/comment/0
2025-09-22 18:32:27.763 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/722514116330950
2025-09-22 18:32:30.262 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/722514116330950
2025-09-22 18:32:30.274 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/comment/0
2025-09-22 18:32:31.801 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/722514116330950
2025-09-22 18:32:31.896 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:32:31.896 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:32:31.922 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-22 18:32:31.974 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-22 18:32:32.015 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:32:32.016 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:32:33.771 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=2&pageSize=10
2025-09-22 18:32:33.771 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '2', 'pageSize': '10'}
2025-09-22 18:32:35.396 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:32:35.396 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:32:41.918 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/722514116330950
2025-09-22 18:32:41.930 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/comment/0
2025-09-22 18:32:43.999 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/category
2025-09-22 18:32:45.747 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/722514116330950
2025-09-22 18:32:45.861 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:32:45.861 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:32:45.872 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-22 18:32:45.884 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-22 18:32:45.915 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:32:45.916 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:32:48.833 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=2&pageSize=10
2025-09-22 18:32:48.833 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '2', 'pageSize': '10'}
2025-09-22 18:32:50.031 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:32:50.031 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:32:53.942 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/722514116330950
2025-09-22 18:32:53.966 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/comment/0
2025-09-22 18:32:54.843 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/category
2025-09-22 18:33:00.928 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/722514116330950
2025-09-22 18:33:01.118 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:33:01.118 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:33:01.129 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-22 18:33:01.139 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-22 18:33:01.180 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:33:01.180 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:33:03.100 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/category
2025-09-22 18:33:05.118 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:33:05.119 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:33:06.433 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/722514116330950
2025-09-22 18:33:06.442 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/comment/0
2025-09-22 18:33:08.330 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:33:08.330 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:33:09.233 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/722514116330950
2025-09-22 18:33:09.244 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/comment/0
2025-09-22 18:33:09.895 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/category
2025-09-22 18:33:11.488 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/722514116330950
2025-09-22 18:33:11.597 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:33:11.597 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:33:11.609 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-22 18:33:11.621 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-22 18:33:11.651 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:33:11.651 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:33:13.466 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/category
2025-09-22 18:33:15.203 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:33:15.204 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:33:15.764 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/category
2025-09-22 18:33:43.025 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:33:43.025 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:33:45.937 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: DELETE http://127.0.0.1:8082/blog/722514116330950
2025-09-22 18:33:45.938 | WARNING  | middleware.exceptions:global_exception_handler:26 - 响应: 405
2025-09-22 18:34:46.500 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/722514116330950
2025-09-22 18:34:46.511 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/comment/0
2025-09-22 18:34:47.017 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/category
2025-09-22 18:34:51.419 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/722514116330950
2025-09-22 18:34:51.500 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:34:51.500 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:34:51.512 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-22 18:34:51.522 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-22 18:34:51.556 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:34:51.557 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:34:53.242 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/category
2025-09-22 18:36:53.036 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:36:53.036 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:36:54.031 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/visit?currentPage=1&pageSize=15
2025-09-22 18:36:54.031 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '15'}
2025-09-22 18:36:57.341 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:36:57.341 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:38:13.963 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/category
2025-09-22 18:38:17.268 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:38:17.268 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:38:19.535 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/722514116330950
2025-09-22 18:38:19.548 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/comment/0
2025-09-22 18:38:20.820 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/category
2025-09-22 18:38:23.110 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/722514116330950
2025-09-22 18:38:23.195 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:38:23.195 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:38:23.206 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-22 18:38:23.221 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-22 18:38:23.249 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:38:23.250 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:38:24.949 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/category
2025-09-22 18:41:06.913 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:41:06.914 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:41:09.726 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: DELETE http://127.0.0.1:8082/blog/722514116330950
2025-09-22 18:41:09.731 | CRITICAL | middleware.exceptions:global_exception_handler:44 - 未知异常: delete_blog_content() missing 1 required positional argument: 'blog_content_id'
2025-09-22 18:41:39.132 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/docs
2025-09-22 18:41:39.238 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/openapi.json
2025-09-22 18:41:54.768 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: DELETE http://127.0.0.1:8082/blog/722514116330950
2025-09-22 18:41:54.771 | CRITICAL | middleware.exceptions:global_exception_handler:44 - 未知异常: delete_blog_content() missing 1 required positional argument: 'blog_content_id'
2025-09-22 18:42:14.812 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: DELETE http://127.0.0.1:8082/blog/722514116330950
2025-09-22 18:42:19.880 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: DELETE http://127.0.0.1:8082/blog/722514116330950
2025-09-22 18:42:19.885 | ERROR  | middleware.exceptions:global_exception_handler:32 - 业务异常: 博客内容不存在 - 详情: None
2025-09-22 18:42:50.275 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: DELETE http://127.0.0.1:8082/blog/722514116330950
2025-09-22 18:42:50.303 | ERROR  | middleware.exceptions:global_exception_handler:32 - 业务异常: 博客内容不存在 - 详情: None
2025-09-22 18:43:06.008 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: DELETE http://127.0.0.1:8082/blog/722514116330950
2025-09-22 18:43:06.051 | ERROR  | middleware.exceptions:global_exception_handler:32 - 业务异常: 博客内容不存在 - 详情: None
2025-09-22 18:44:09.227 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: DELETE http://127.0.0.1:8082/blog/722514116330950
2025-09-22 18:44:09.253 | ERROR  | middleware.exceptions:global_exception_handler:32 - 业务异常: 博客内容不存在 - 详情: None
2025-09-22 18:45:23.874 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: DELETE http://127.0.0.1:8082/blog/722514116330950
2025-09-22 18:45:23.925 | ERROR  | middleware.exceptions:global_exception_handler:32 - 业务异常: 博客内容不存在 - 详情: None
2025-09-22 18:45:57.101 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/722514116330950
2025-09-22 18:45:57.113 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/comment/0
2025-09-22 18:45:58.136 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:45:58.137 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:46:03.406 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/722514116330950
2025-09-22 18:46:03.449 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/comment/0
2025-09-22 18:46:04.490 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:46:04.490 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:46:20.664 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:46:20.664 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:46:22.438 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: DELETE http://127.0.0.1:8082/blog/722514116330950
2025-09-22 18:46:22.443 | ERROR  | middleware.exceptions:global_exception_handler:32 - 业务异常: 博客内容不存在 - 详情: None
2025-09-22 18:46:56.020 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: DELETE http://127.0.0.1:8082/blog/722514116330950
2025-09-22 18:47:07.468 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: DELETE http://127.0.0.1:8082/blog/722514116330950
2025-09-22 18:47:41.733 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: DELETE http://127.0.0.1:8082/blog/722514116330950
2025-09-22 18:50:54.925 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: DELETE http://127.0.0.1:8082/blog/722514116330950
2025-09-22 18:50:55.028 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:50:55.028 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:50:55.067 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-22 18:50:55.083 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-22 18:51:10.453 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/category
2025-09-22 18:51:13.077 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: POST http://127.0.0.1:8082/blog
2025-09-22 18:51:13.285 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:51:13.286 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:51:13.301 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-22 18:51:13.317 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-22 18:51:13.358 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:51:13.359 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:51:15.327 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=2&pageSize=10
2025-09-22 18:51:15.328 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '2', 'pageSize': '10'}
2025-09-22 18:54:54.576 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:54:54.576 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:54:56.974 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=2&pageSize=10
2025-09-22 18:54:56.974 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '2', 'pageSize': '10'}
2025-09-22 18:54:59.240 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: DELETE http://127.0.0.1:8082/blog/722542064379334
2025-09-22 18:54:59.455 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:54:59.455 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:54:59.466 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:54:59.466 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:54:59.494 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-22 18:54:59.527 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-22 18:55:00.853 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=2&pageSize=10
2025-09-22 18:55:00.853 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '2', 'pageSize': '10'}
2025-09-22 18:55:02.437 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:55:02.437 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:55:07.394 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/category
2025-09-22 18:55:08.960 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: POST http://127.0.0.1:8082/blog
2025-09-22 18:55:09.151 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:55:09.151 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:55:09.164 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-22 18:55:09.176 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-22 18:55:09.215 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:55:09.216 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:55:12.434 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/722543030515142
2025-09-22 18:55:12.446 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/comment/0
2025-09-22 18:55:13.732 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:55:13.732 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:55:15.059 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/722543030515142
2025-09-22 18:55:15.072 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/comment/0
2025-09-22 18:55:15.748 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/category
2025-09-22 18:55:21.292 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: PUT http://127.0.0.1:8082/blog/722543030515142
2025-09-22 18:55:21.465 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:55:21.466 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:55:21.477 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-22 18:55:21.488 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-22 18:55:21.524 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:55:21.524 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:55:23.208 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/content/722543030515142
2025-09-22 18:55:23.219 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/comment/0
2025-09-22 18:55:24.389 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:55:24.390 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:55:28.920 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: DELETE http://127.0.0.1:8082/blog/722543030515142
2025-09-22 18:55:29.157 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:55:29.157 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:55:29.182 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/stats
2025-09-22 18:55:29.192 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/latest
2025-09-22 18:55:30.441 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=2&pageSize=10
2025-09-22 18:55:30.441 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '2', 'pageSize': '10'}
2025-09-22 18:55:31.669 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:55:31.669 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 18:56:17.221 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=2&pageSize=10
2025-09-22 18:56:17.221 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '2', 'pageSize': '10'}
2025-09-22 18:56:19.131 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 18:56:19.131 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 19:04:46.072 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 19:04:46.073 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 19:05:04.232 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 19:05:04.232 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 19:06:27.903 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/category
2025-09-22 19:06:29.614 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/category
2025-09-22 19:06:30.762 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 19:06:30.763 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 19:06:31.344 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/category
2025-09-22 19:06:31.873 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/visit?currentPage=1&pageSize=15
2025-09-22 19:06:31.873 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '15'}
2025-09-22 19:06:33.165 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 19:06:33.165 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 19:07:01.746 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/visit?currentPage=1&pageSize=15
2025-09-22 19:07:01.747 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '15'}
2025-09-22 19:07:14.066 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/visit?currentPage=1&pageSize=15
2025-09-22 19:07:14.066 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '15'}
2025-09-22 19:07:17.578 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/visit?currentPage=1&pageSize=15
2025-09-22 19:07:17.578 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '15'}
2025-09-22 19:07:20.284 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/category
2025-09-22 19:07:29.679 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 19:07:29.679 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 19:07:43.055 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 19:07:43.055 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 19:07:43.499 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/category
2025-09-22 19:07:59.605 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 19:07:59.605 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 19:08:00.326 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/category
2025-09-22 19:08:01.072 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/visit?currentPage=1&pageSize=15
2025-09-22 19:08:01.072 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '15'}
2025-09-22 19:08:37.540 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/visit?currentPage=1&pageSize=15
2025-09-22 19:08:37.541 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '15'}
2025-09-22 19:08:41.634 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 19:08:41.634 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 19:08:42.352 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/category
2025-09-22 19:08:46.044 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/visit?currentPage=1&pageSize=15
2025-09-22 19:08:46.044 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '15'}
2025-09-22 19:08:46.882 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/category
2025-09-22 19:08:47.220 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 19:08:47.220 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 19:35:46.700 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 19:35:46.701 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}
2025-09-22 19:36:39.565 | INFO  | middleware.exceptions:global_exception_handler:18 - 请求: GET http://127.0.0.1:8082/blog/page?currentPage=1&pageSize=10
2025-09-22 19:36:39.565 | INFO  | middleware.exceptions:global_exception_handler:20 - 查询参数: {'currentPage': '1', 'pageSize': '10'}

Binary file not shown.

Binary file not shown.

View File

@@ -2,6 +2,56 @@ from fastapi import Request
from models.blog import BlogVisit
# 博客概要字数
BLOG_SUMMARY_COUNT = 100
# 阅读速度 600 字/分钟
READ_SPEED = 600.0
# 博客非统计字符
EXCLUDE_CHARS = [' ', '\n', '\t']
def get_word_count(text: str) -> int:
"""
获取文本字数
:param text: 文本
:return: 字数
"""
count = 0
if not text: # 检查None或空字符串
return count
for char in text:
if char not in EXCLUDE_CHARS:
count += 1
return count
def get_read_duration(word_count: int) -> float:
"""
获取阅读时长 单位:分钟
:param word_count: 文本字数
:return: 阅读时长
"""
return word_count / READ_SPEED
def get_blog_summary(content: str) -> str:
"""
获取简要信息
:param content: 博客内容
:return: 简要信息
"""
if len(content) > BLOG_SUMMARY_COUNT:
return content[:BLOG_SUMMARY_COUNT]
return content
def get_client_ip(request):
"""从请求中获取客户端IP地址"""