首頁

目前文章總數:157 篇

  

最後更新:2024年 12月 07日

0053. .Net Core WebSite 設定GrayLog

日期:2023年 10月 28日

標籤: C# Asp.net Core Web MVC Web GrayLog

摘要:C# 學習筆記


應用所需:1. 一台已架設好的 GrayLog Server
     2. Visual Studio 2022 以上,支援.net Core6
範例檔案:範例檔案
解決問題:1. .Net Core WebSite 如何傳送Log給遠端的GrayLog
     2. .Net Core WebSite 本地依照等級記錄Log
GrayLog Server 可參考上篇連結
基本介紹:本篇分為二大部分。
第一部分:傳送Log給GrayLog
第二部分:紀錄本地Log






第一部分:傳送Log給GrayLog

Step 1:Nuget安裝 - 1

打開Nuget安裝套件 Serilog.Sinks.Graylog


Step 2:Nuget安裝 - 2

打開Nuget安裝套件 Serilog


Step 3:設定Program.cs

打開專案的Program.cs 設定啟動Log配置,依照下方3步驟。
並添加一些Log內容,預期發送到Server有訊息: MilkTeaGreen Test GrayLogSendLogExample Log

//1. 引用
using Serilog;
using Serilog.Events;
using Serilog.Sinks.Graylog;


var builder = WebApplication.CreateBuilder(args);

//2. builder 後建立Log
Log.Logger = new LoggerConfiguration()        
    .MinimumLevel.Information()//最小為Infomation                
    .WriteTo.Graylog(new GraylogSinkOptions()//輸出到 Graylog
    {
        HostnameOrAddress = builder.Configuration.GetSection("Graylog:Host").Value,
        Port = int.Parse(builder.Configuration.GetSection("Graylog:Port").Value),
    })
    .CreateLogger();

//3. 寫點Log內容
Log.Information($@"MilkTeaGreen Test GrayLogSendLogExample Log");

\\配置其他app configure...



Step 4:設定appsettings.json

打開專案的設定檔案 appsettings.json ,添加Host與Port
※這邊的Host與Port是自己遠端的GrayLog Server位址

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  // 這裡添加GrayLog 配置
  "Graylog": {
    "Host": "192.168.51.62",
    "Port": 12201
  },
  "AllowedHosts": "*"
}



Step 5:Demo-啟動專案

設定完成後,啟動專案


Step 6:看見成功收到Log - 成功

登入GrayLog Server 查看,可以得到我們預期的Log




第二部分:紀錄本地Log

Step 1:Nuget安裝 - 1

打開Nuget安裝套件 Serilog.Sinks.File


Step 2:設定Program.cs

打開專案的Program.cs 設定啟動Log配置,目的是寫Log在本地,並且用Level來分資料夾
原本第一部分的代碼,添加了4-1, 4-2, 4-3
並添加一些Log內容,預期本地會記錄 InfomationError的Log,並且依照日期新增。

//1. 引用
using Serilog;
using Serilog.Events;
using Serilog.Sinks.Graylog;

var builder = WebApplication.CreateBuilder(args);

//2. builder 後建立Log
Log.Logger = new LoggerConfiguration()        
    .MinimumLevel.Information()//最小層級是Infomation    
    //4-1. 建立以等級區分的資料夾,並且都是用天數來記錄
    .WriteTo.Logger(l => l.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Information)
            .WriteTo.File(@"Logs\Info\Info.log", rollingInterval: RollingInterval.Day))
    .WriteTo.Logger(l => l.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Error)
            .WriteTo.File(@"Logs\Error\Error.log", rollingInterval: RollingInterval.Day))    
    .WriteTo.Graylog(new GraylogSinkOptions()//輸出到 Graylog
    {
        HostnameOrAddress = builder.Configuration.GetSection("Graylog:Host").Value,
        Port = int.Parse(builder.Configuration.GetSection("Graylog:Port").Value),
    })
    .CreateLogger();

//3. 寫點Log內容
Log.Information($@"MilkTeaGreen Test GrayLogSendLogExample Log");

//4-2. Information 本地
Log.Information($@"MilkTeaGreen Test GrayLogSendLogExample Log => INF");
//4-3. Error 本地
Log.Error($@"MilkTeaGreen Test GrayLogSendLogExample Log => ERR");

\\配置其他app configure...



Step 3:Demo-啟動專案

設定完成後,啟動專案


Step 4:本地紀錄Log - 成功

可以看到我們產生 Logs資料夾,且下面會有兩種Level的Log (因為配置只設定這兩種)


Information的Log


Error的Log