使用Logtail将FastAPI应用的日志上传到阿里云SLS是一个非常实用的日志管理方案。以下是具体的配置步骤,旨在帮助你快速上手使用Logtail和SLS。
步骤1:安装Logtail
1.1 安装依赖
确保服务器上已安装curl
工具,因为Logtail的自动诊断工具需要它。
1.2 下载Logtail安装包
从阿里云文档中获取Logtail的安装包,并按照文档的指引进行安装。
1.3 安装Logtail
对于Linux系统,可以使用以下命令安装Logtail:
bash
wget http://logtail-release.oss-cn-hangzhou.aliyuncs.com/linux64/logtail.sh
chmod 744 logtail.sh
./logtail.sh install
步骤2:配置阿里云SLS
2.1 创建SLS Project和Logstore
登录阿里云控制台,进入SLS控制台,创建一个新的Project和Logstore。
2.2 获取AccessKey ID和AccessKey Secret
创建一个RAM用户,并授予该用户对Project和Logstore的写入权限,获取AccessKey ID和AccessKey Secret。
步骤3:配置Logtail
3.1 创建Logtail配置
在SLS控制台中创建一个Logtail配置,指定日志文件路径、日志格式等参数。例如:
json
{
"configName": "fastapi-logs",
"inputType": "file",
"inputDetail": {
"logPath": "/path/to/your/fastapi/logs/*.log",
"logType": "text",
"filePattern": "regex",
"logSample": ""
},
"outputType": "LogService",
"outputDetail": {
"projectName": "your-project-name",
"logstoreName": "your-logstore-name"
}
}
3.2 应用配置
将配置应用到相应的机器组中,确保Logtail能够采集日志并发送到SLS。
步骤4:配置FastAPI日志输出
4.1 配置日志输出到文件
使用Python的logging
模块将FastAPI应用的日志输出到文件。例如:
python
from fastapi import FastAPI
from logging.handlers import RotatingFileHandler
import logging
app = FastAPI()
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
file_handler = RotatingFileHandler('/path/to/your/fastapi/logs/app.log', maxBytes=1024*1024*10, backupCount=5)
file_handler.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)
@app.get("/")
def read_root():
logger.info("访问根路径")
return {"Hello": "World"}
4.2 使用loguru配置日志
如果你更喜欢使用loguru
,可以这样配置:
python
import os
import time
from loguru import logger
log_path = os.path.join(os.getcwd(), 'logs')
if not os.path.exists(log_path):
os.mkdir(log_path)
log_path_error = os.path.join(log_path, f'{time.strftime("%Y-%m-%d")}_error.log')
logger.add(log_path_error, rotation="12:00", retention="5 days", enqueue=True)
# 在需要的地方使用logger
logger.info("创建用户")
步骤5:测试日志上传
5.1 生成测试日志
确保FastAPI应用正在生成日志,并且日志文件位于配置的路径中。
5.2 检查SLS日志
登录阿里云SLS控制台,进入你的Logstore查看是否成功上传了日志。
示例代码:使用loguru输出日志
python
from fastapi import FastAPI
from common.logs import logger
app = FastAPI()
@app.get("/")
def read_root():
logger.info("访问根路径")
return {"Hello": "World"}
通过这些步骤,你应该能够成功地使用Logtail将FastAPI应用的日志上传到阿里云SLS中。