C# 使用 Serilog 將 Log 寫入 Loki

在昨天的文章中有示範 Linux 安裝 Grafana 和 Loki ,本篇就來示範將 C# 的 Log 資料寫入到 Loki 中,讓我們能夠在 Grafana 中檢視。

安裝套件

使用 .NET CLI 安裝 Serilog 套件:
	
dotnet add package Serilog
    

使用 .NET CLI 安裝 Serilog.Sinks.Grafana.Loki 套件:
	
dotnet add package Serilog.Sinks.Grafana.Loki
    

如果想要在指令視窗中輸出 Log 的話再安裝 Serilog.Sinks.Console 套件:
	
dotnet add package Serilog.Sinks.Console
    

程式碼範例:
    
using Serilog;
using Serilog.Sinks.Grafana.Loki;


string grafanaLokiUrl = "http://192.168.0.41:3100"; // 替換為 Loki 的網址, port 預設是 3100

Log.Logger = new LoggerConfiguration()
    .MinimumLevel.Verbose() // 設定最低顯示層級 預設: Information
    .WriteTo.Console() // 輸出到 指令視窗 (需要安裝 Serilog.Sinks.Console 套件)
    .WriteTo.GrafanaLoki(grafanaLokiUrl, new List<LokiLabel>() // 輸出到 Grafana Loki
    {
        new LokiLabel // 自定義標籤
        {
            Key = "app",
            Value = "ConsoleAppGrafanaLokiTest1203",
        },
        new LokiLabel // 自定義標籤
        {
            Key = "env",
            Value = "dev",
        },
    })
    .CreateLogger();


// 訊息範例
Log.Information("資訊");
Log.Warning("警告");
Log.Error("錯誤1");
Log.Error(new Exception("例外"), "錯誤2");

Log.CloseAndFlush(); // 程式結束時關閉和釋放 log 檔案
    

在 Grafana 的 Explore 中,選擇 Loki ,就可以找到剛剛上傳的資料了!



參考資料:
GitHub - Serilog.Sinks.GrafanaLoki

留言