C# 日志写入loki

在 C# 中实现日志写入 Loki 最常用的方式是结合 Serilog 日志框架和 Serilog.Sinks.Grafana.Loki 扩展包。这种方式支持结构化日志、自定义标签和灵活的配置,以下是完整的实现步骤:

一、准备工作

  1. 安装 NuGet 包
    在项目中安装必要的依赖包(通过 NuGet 包管理器或命令行):

    # Serilog 核心包
    Install-Package Serilog -Version 3.1.1
    Install-Package Serilog.AspNetCore -Version 8.0.0  # 集成 ASP.NET Core
    
    # Loki 接收器(用于将日志发送到 Loki)
    Install-Package Serilog.Sinks.Grafana.Loki -Version 8.0.0
    
  2. 确保 Loki 服务可用
    确认 Loki 已启动并可访问(默认地址:http://localhost:3100),可通过访问 http://localhost:3100/ready 验证,返回 ready 即表示正常运行。

二、配置 Serilog 连接 Loki

Program.cs 中配置 Serilog,设置 Loki 服务地址、日志标签、租户信息(可选)和日志格式:

using Serilog;
using Serilog.Sinks.Grafana.Loki;
using System.Collections.Generic;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;

var builder = WebApplication.CreateBuilder(args);

// 1. 从配置文件读取 Loki 地址和租户 ID(建议通过 appsettings.json 配置)
var lokiUri = builder.Configuration["Loki:Uri"] ?? "http://localhost:3100";
var tenantId = builder.Configuration["Loki:TenantId"] ?? "default-tenant"; // 多租户标识

// 2. 配置 Serilog 日志系统
List<LokiLabel> labels = new List<LokiLabel>();
labels.Add(new LokiLabel {
   
    Key = "App", Value = "testproject" });

// 1.获取应用程序名称和版本(用于 Elasticsearch 索引命名)
var appName = Assembly.GetExecutingAssembly().GetName().Name;
var appVersion = Assembly.GetExecutingAssembly(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值