Graylog: 與 Dot NET 一起使用

如何從 .NET/Serilog 傳送日誌到 Graylog

👋 歡迎瀏覽 Stackhero 文件

Stackhero 提供全託管的 Graylog cloud 方案,專為高效與簡易而設。您可以:

  • 依賴隨服務附送的無限量、專屬 SMTP 電郵伺服器
  • 只需一鍵即可輕鬆更新,無需手動操作。
  • 使用受 HTTPS 保護的自訂網域名稱(例如 https://logs.your-company.com),讓您的團隊安全直接存取。
  • 專屬私人基礎設施上享有卓越效能安全性,無需與他人共用資源,亦無「嘈吵鄰居」問題。

專注於您的數據,而非工具管理:只需數分鐘,即可開始使用 Stackhero 的 Graylog cloud hosting 方案。

Serilog 是一個非常受歡迎且高度可擴展的日誌管理程式庫,廣泛用於 .NET 應用程式的日誌管理。它讓開發人員可以設定不同的 sink 來儲存及視覺化日誌。

以下是一個簡單的 Serilog 使用範例:

var log = new LoggerConfiguration()
    .WriteTo.Console()
    .WriteTo.File("log.txt")
    .CreateLogger();

log.Information("Hello, Serilog!");

如需將日誌傳送到 Graylog 伺服器,您可以使用 serilog-sinks-graylog 套件。這個 sink 可以直接以 GELF 格式將日誌傳送到 Graylog

  1. 安裝套件

    透過以下指令,將 serilog-sinks-graylog 套件加入您的專案:

    Install-Package serilog.sinks.graylog
    
  2. 設定 Serilog 連接 Graylog

    請將您的應用程式設定更新為以下程式碼片段。請將 <XXXXXX>.stackhero-network.com 替換為您的 Graylog 實例網域:

    var loggerConfig = new LoggerConfiguration()
        .WriteTo.Graylog(
            new GraylogSinkOptions
            {
                HostnameOrAddress = "<XXXXXX>.stackhero-network.com",
                Port = 12201
            }
        );
    
  3. 設定 Graylog

    • 登入您的 Graylog 控制台。
    • 前往 System > Inputs
    • 建立一個新的 "GELF UDP" 輸入。
    • 點擊 "Launch new input"。在彈出視窗中,啟用 "Global" 選項,為輸入命名,然後直接儲存設定,無需更改其他選項。

為提升安全性,建議限制可連接至 12201 埠的 IP。您可以在 Stackhero 控制台選擇您的 Graylog 服務,然後於「Firewall」設定中只允許特定 IP 存取。

按照以上步驟,您的 .NET 應用程式即可安全且高效地將日誌傳送到您的 Graylog 實例。