<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Serilog: 強大的 .NET 日志庫

       

      Serilog 是一個功能強大的日志記錄庫,專為 .NET 平臺設計。它提供了豐富的 API 和可插拔的輸出器及格式化器,使得開發者能夠輕松定制和擴展日志記錄功能。在本文中,我們將探索 Serilog 的基礎知識、API 使用、配置和一些常見的示例。


      1. 日志級別

      Serilog 支持多個日志級別,按照嚴重性從高到低排列如下:

      • Fatal: 程序無法繼續運行,必須立即解決的問題。
      • Error: 發生了錯誤,需要處理。
      • Warning: 警告,需關注但不必立即處理。
      • Information: 提供有用的消息,通常用于調試。
      • Debug: 調試信息,幫助開發者調試程序。
      • Verbose: 詳細的日志信息,通常用于復雜問題的調試。

      2. 日志輸出

      Serilog 支持多種日志輸出方式,包括:

      • Console: 輸出到控制臺。
      • File: 輸出到文件。
      • Seq: 輸出到日志收集器 Seq。
      • Elasticsearch: 輸出到 Elasticsearch。

      此外,Serilog 也支持自定義日志輸出器。


      3. 日志格式

      Serilog 提供了多種格式化日志消息的方式:

      • 簡單文本格式:常見的日志輸出格式。
      • JSON 格式:適合結構化日志。
      • Message Templates 格式:一種靈活的格式,允許在日志消息中插入占位符。

      4. 安裝

      Serilog 可以通過 NuGet 安裝:

      Install-Package Serilog
      

      5. 基礎使用示例

      在應用程序中使用 Serilog 十分簡單。以下是一個簡單的控制臺日志輸出示例:

      using Serilog;
      
      class Program
      {
          static void Main()
          {
              Log.Logger = new LoggerConfiguration()
                  .MinimumLevel.Debug()
                  .WriteTo.Console()
                  .CreateLogger();
      
              Log.Information("Hello, Serilog!");
      
              Log.CloseAndFlush();
          }
      }
      

      此代碼將在控制臺輸出 Hello, Serilog!


      6. 日志級別示例

      Serilog 允許設置不同的日志級別。以下示例演示了如何記錄各種級別的日志消息:

      using Serilog;
      
      class Program
      {
          static void Main()
          {
              Log.Logger = new LoggerConfiguration()
                  .MinimumLevel.Verbose()
                  .WriteTo.Console()
                  .CreateLogger();
      
              Log.Verbose("This is a verbose log message.");
              Log.Debug("This is a debug log message.");
              Log.Information("This is an informational log message.");
              Log.Warning("This is a warning log message.");
              Log.Error("This is an error log message.");
              Log.Fatal("This is a fatal log message.");
      
              Log.CloseAndFlush();
          }
      }
      

      7. 消息模板

      Serilog 支持消息模板,允許開發者在日志中使用占位符。以下示例展示了如何使用消息模板:

      using Serilog;
      
      class Program
      {
          static void Main()
          {
              Log.Logger = new LoggerConfiguration()
                  .MinimumLevel.Debug()
                  .WriteTo.Console(outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {Message:lj}{NewLine}{Exception}")
                  .CreateLogger();
      
              Log.Information("Hello, {Name}!", "Serilog");
      
              Log.CloseAndFlush();
          }
      }
      

      上述代碼將在控制臺輸出如下格式的日志:

      2023-09-15 22:23:54.576 +08:00 [INF] Hello, Serilog!
      

      8. 日志屬性

      Serilog 支持在日志中添加附加屬性。以下示例展示了如何記錄額外的信息:

      using Serilog;
      
      class Program
      {
          static void Main()
          {
              Log.Logger = new LoggerConfiguration()
                  .MinimumLevel.Debug()
                  .WriteTo.Console()
                  .CreateLogger();
      
              Log.Information("Processed {@Count} records in {Time} ms.", new { Count = 10, Time = 123 });
      
              Log.CloseAndFlush();
          }
      }
      

      此代碼會輸出:

      Processed { Count: 10, Time: 123 } records in 0 ms.
      

      9. 文件輸出配置

      Serilog 允許將日志輸出到文件,并通過 rollingInterval 設置日志滾動方式。以下示例展示了如何按天滾動文件并設置輸出模板:

      Log.Logger = new LoggerConfiguration()
          .WriteTo.File(
              $"logs\\log-.txt", 
              rollingInterval: RollingInterval.Day, 
              outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {Message:lj}{NewLine}{Exception}")
          .CreateLogger();
      
      Log.Information("This is a log message!");
      
      Log.CloseAndFlush();
      

      這將創建類似于 log-20230914.txt 的文件,每天一個新文件。


      10. 結構化日志記錄

      Serilog 支持結構化日志記錄,這意味著可以將復雜的數據(如對象、集合等)以結構化的方式存儲和輸出。例如:

      using Serilog;
      
      class Program
      {
          static void Main()
          {
              var weather = new WeatherForecast
              {
                  Date = DateTime.Now,
                  TemperatureC = 22,
                  Summary = "Sunny"
              };
      
              Log.Information("Weather forecast: {@Weather}", weather);
      
              Log.CloseAndFlush();
          }
      }
      
      public class WeatherForecast
      {
          public DateTime Date { get; set; }
          public int TemperatureC { get; set; }
          public string Summary { get; set; }
      }
      

      此代碼將輸出類似于:

      Weather forecast: {"Date":"2023-09-15T22:39:53.8634787+08:00","TemperatureC":22,"Summary":"Sunny","$type":"WeatherForecast"}
      

      11. 日志過濾

      Serilog 允許使用過濾器控制輸出。以下示例僅輸出錯誤級別以上的日志:

      using Serilog;
      
      class Program
      {
          static void Main()
          {
              Log.Logger = new LoggerConfiguration()
                  .MinimumLevel.Debug()
                  .WriteTo.Console()
                  .Filter.ByIncludingOnly(logEvent => logEvent.Level >= LogEventLevel.Error)
                  .CreateLogger();
      
              Log.Verbose("This is a verbose log message.");
              Log.Error("This is an error log message.");
      
              Log.CloseAndFlush();
          }
      }
      

      此代碼只會在控制臺輸出錯誤和更高嚴重級別的日志。


      12. 擴展與自定義輸出器

      Serilog 支持自定義輸出器,允許開發者將日志輸出到不同的目的地(例如 Elasticsearch、數據庫等)。以下是一個創建自定義控制臺輸出器的例子:

      using Serilog;
      using Serilog.Configuration;
      using Serilog.Events;
      
      public static class CustomConsoleSinkExtensions
      {
          public static LoggerConfiguration CustomConsole(
              this LoggerSinkConfiguration sinkConfiguration,
              ITextFormatter formatter = null,
              LogEventLevel restrictedToMinimumLevel = LevelAlias.Minimum)
          {
              return sinkConfiguration.Sink(
                  new CustomConsoleSink(formatter),
                  restrictedToMinimumLevel);
          }
      }
      
      public class CustomConsoleSink : ILogEventSink
      {
          private readonly ITextFormatter _formatter;
      
          public CustomConsoleSink(ITextFormatter formatter)
          {
              _formatter = formatter ?? throw new ArgumentNullException(nameof(formatter));
          }
      
          public void Emit(LogEvent logEvent)
          {
              var message = new StringWriter();
              _formatter.Format(logEvent, message);
              Console.WriteLine(message.ToString());
          }
      }
      

      然后可以通過以下方式將其添加到日志配置中:

      Log.Logger = new LoggerConfiguration()
          .WriteTo.CustomConsole()
          .CreateLogger();
      

      13. 總結

      Serilog 是一個功能強大的 .NET 日志庫,支持豐富的日志記錄方式、輸出方式和格式化選項。它的可擴展性和靈活性使得開發者能夠根據應用程序的需求定制日志記錄方式。從簡單的控制臺日志到復雜的結構化日志和自定義輸出器,Serilog 都能輕松應對。

      希望本文對您理解 Serilog 和高效使用該庫有所幫助!

      posted @ 2025-03-04 09:05  努力,努力再努力  閱讀(684)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 福利成人午夜国产一区| 色婷婷五月综合亚洲小说| 亚洲成av人片天堂网无码| 日韩人妻少妇一区二区三区| 久久碰国产一区二区三区| 国产性色av免费观看| 日韩午夜一区二区福利视频| 少妇高潮水多太爽了动态图| 少妇高潮喷水正在播放| 国产精品无码久久久久AV| 人妻饥渴偷公乱中文字幕| 国产偷国产偷亚洲高清人| 亚洲日本va午夜在线电影| 激情四射激情五月综合网| 真人性囗交视频| 深夜精品免费在线观看| 日韩内射美女人妻一区二区三区| 一个人在看www免费| 中文字幕亚洲男人的天堂| 国产成人av免费网址| 婷婷色综合成人成人网小说| 亚洲2022国产成人精品无码区| 中文字幕国产精品第一页| 国产精品午夜福利合集| 天天综合亚洲色在线精品| 在线aⅴ亚洲中文字幕| 18av千部影片| 内射视频福利在线观看| 琼海市| 国产偷国产偷亚洲综合av| 亚洲第一极品精品无码久久| 国产精品自在拍首页视频8 | 美女午夜福利视频一区二区| 综合激情亚洲丁香社区| 国产激情艳情在线看视频| 西西人体44www大胆无码| 久久99久久99精品免观看| 国内精品久久久久影院网站| 日本三级香港三级三级人!妇久| 小伙无套内射老熟女精品| 日韩在线成年视频人网站观看|