logging_config.py
import logging
import logging.config
LOGGING = {
‘version’: 1,
‘disable_existing_loggers’: False,
‘formatters’: {
‘verbose’: {
‘format’: ‘%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s’
},
‘simple’: {
‘format’: ‘%(levelname)s %(message)s’
},
},
‘handlers’: {
‘console’: {
‘level’: ‘DEBUG’,
‘class’: ‘logging.StreamHandler’,
‘formatter’: ‘verbose’,
},
‘file’: {
‘level’: ‘DEBUG’,
‘class’: ‘logging.FileHandler’,
‘filename’: ‘app.log’,
‘formatter’: ‘verbose’,
},
},
‘loggers’: {
‘fastapi’: {
‘handlers’: [‘console’, ‘file’],
‘level’: ‘DEBUG’,
‘propagate’: True,
},
},
}
def setup_logging():
logging.config.dictConfig(LOGGING)
main.py
from fastapi import FastAPI
from logging_config import setup_logging
app = FastAPI()
配置日志
setup_logging()
… 其他的FastAPI应用代码 …
某个路由处理函数或模块
import logging
logger = logging.getLogger(‘fastapi’)
@app.get(“/items/{item_id}”)
async def read_item(item_id: str):
logger.info(f"Reading item {item_id}")
# … 其他代码 …
return {“item_id”: item_id}
- 日志旋转和清理
对于大型项目,你可能还需要考虑日志文件的旋转和清理策略,以避免日志文件过大或占用过多磁盘空间。Python的logging.handlers模块提供了RotatingFileHandler和TimedRotatingFileHandler等类,可以帮助你实现这些功能。