使用Loggie将FastAPI Web日志上传到阿里云SLS的简单教程

本教程将指导你如何在Ubuntu系统上使用Loggie将FastAPI的Web日志上传到阿里云SLS。我们将一步步地完成安装、配置和测试。

步骤1:安装Loggie

1. 安装Golang

首先,确保你的Ubuntu系统上已经安装了Golang。如果尚未安装,可以使用以下命令:

bash 复制代码
sudo apt update
sudo apt install -y golang-go

2. 下载Loggie源码

你可以从GitHub下载Loggie的源码:

bash 复制代码
git clone https://github.com/loggie-io/loggie.git
cd loggie

3. 编译Loggie

如果你下载了源码,需要编译Loggie:

bash 复制代码
go build -o loggie main.go

4. 配置环境变量(可选)

如果你想全局使用Loggie,可以配置环境变量:

bash 复制代码
export PATH=$PATH:/path/to/loggie

步骤2:配置阿里云SLS

1. 创建阿里云SLS Project和Logstore

  • 登录阿里云控制台,进入SLS控制台。
  • 创建一个新的Project和Logstore。

2. 获取AccessKey ID和AccessKey Secret

  • 创建一个RAM用户,并授予该用户对Project和Logstore的写入权限。
  • 获取RAM用户的AccessKey ID和AccessKey Secret。

步骤3:配置Loggie

1. 创建Loggie配置文件

创建一个名为pipelines.yml的配置文件,内容如下:

yaml 复制代码
pipelines:
- name: web-logs
  sources:
  - type: file
    name: web-logs
    paths:
    - /path/to/your/web/logs/*.log
    addonMeta: true
  sink:
    type: sls
    endpoint: ${endpoint}  # 阿里云SLS服务入口
    accessKeyId: ${accessKeyId}
    accessKeySecret: ${accessKeySecret}
    project: ${project}     # 你的Project名称
    logstore: ${logstore}   # 你的Logstore名称
    topic: myweblogs        # 自定义日志主题

2. 设置环境变量

在终端中设置环境变量:

bash 复制代码
export endpoint="cn-shanghai.log.aliyuncs.com"
export accessKeyId="YOUR_ACCESS_KEY_ID"
export accessKeySecret="YOUR_ACCESS_KEY_SECRET"
export project="YOUR_PROJECT_NAME"
export logstore="YOUR_LOGSTORE_NAME"

步骤4:运行Loggie

1. 启动Loggie服务

使用以下命令启动Loggie:

bash 复制代码
./loggie --config.path=pipelines.yml

2. 确保Loggie持续运行

可以使用systemd或supervisord等工具来管理Loggie服务。

步骤5:测试日志上传

1. 生成测试日志

确保你的FastAPI应用正在生成日志,并且日志文件位于配置的路径中。

2. 检查SLS日志

登录阿里云SLS控制台,进入你的Logstore查看是否成功上传了日志。

示例代码:FastAPI生成日志

如果你使用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/web/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"}

通过这些步骤,你应该能够成功地使用Loggie将FastAPI的Web日志上传到阿里云SLS中。

相关推荐
Json____5 分钟前
家居装修 AI 智能咨询助手:让装修咨询从“大海捞针“变成“一问即答“
java·后端·vue3·it学习·wwwoop.com
Apifox1 小时前
Apifox 9 月更新|CLI 能力升级、GitLab 私有化部署接入与产品体验优化
前端·后端·测试
m4Rk_1 小时前
【论文阅读】Agent 记忆机制(82):ReasoningBank——从成功与失败经验中沉淀可复用的推理记忆
论文阅读·人工智能·学习·开源·github
鱼弦1 小时前
Agent智能体 vs 传统运维:职业天花板的3倍差距?
后端
暗夜行者之光1 小时前
LangGraph 实战:用 LangSmith 可视化追踪 AI 智能体执行轨迹
后端
鱼弦1 小时前
Agent 的工具选择策略:从硬编码到动态决策
后端
Lost of 程序猿1 小时前
建造者模式实战:告别“十参数构造函数“的数据导出任务
后端·设计模式·c#·asp.net
SensorFlow1 小时前
ClickHouse 埋点事件表:先验证时间与重复,再谈漏斗看板
后端
EatFan2 小时前
GitHub Trending 三连观察:AI 编码智能体进入“周边生态”竞争阶段
人工智能·驱动开发·github·mcp·superpowers·github trending·spec kit
Dreams_l2 小时前
基于SpringBoot实现的抽奖系统(一)
java·spring boot·后端