C# 將 Log 寫入 Graylog 示範

在上一篇 使用 Docker Compose 快速建立 Graylog 日誌管理系統 中已經使用 docker compose 安裝好 Graylog ,本篇就來示範將 C# 中的 log 檔案寫入到 Graylog 中。

接收資料輸入

Graylog 預設不會接收資料輸入,雖然在上一篇有開啟接收 API 的資料輸入,不過這次的是需要另外開啟。點選上方的 System > Inputs ,選擇 GELF UDP,點選 Launch new input

在彈出的視窗中輸入標題,點選 Launch Input

安裝相關套件

先使用 NuGet 安裝主要寫 log 的 Serilog 套件,或是使用 .NET CLI 執行以下指令安裝
	
dotnet add package Serilog
    

安裝 Serilog.Sinks.Console 套件,用於將指令顯示在 Console 的套件,方便除錯:
	
dotnet add package Serilog.Sinks.Console
    

安裝將 Serilog 的 log 寫入到 Graylog 的套件 Serilog.Sinks.Graylog
	
dotnet add package Serilog.Sinks.Graylog
    

輸出 log

在 Serilog 中只要多加上 WriteTo.Graylog 就可以很容易的將 log 送到 Graylog 中了

using Serilog;
using Serilog.Sinks.Graylog;

Log.Logger = new LoggerConfiguration()
    .MinimumLevel.Verbose() // 設定最低顯示層級 預設: Information
    .WriteTo.Console() // 輸出到 指令視窗
    .WriteTo.Graylog(new GraylogSinkOptions() // 輸出到 Graylog
    {
        HostnameOrAddress = "localhost",
        Port = 12201,
    })
    .CreateLogger();


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


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

就可以直接在網頁上看到了!
    
http://localhost:9000/search
    




延伸閱讀: C# 最簡單使用 Serilog 寫 Log (不用設定檔)

留言