欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C# Serilog 日志的使用小結(jié)

 更新時間:2025年08月13日 11:31:33   作者:卷紙要用清風(fēng)的  
Serilog是一個功能強大且靈活的日志庫,它支持多種日志輸出目標(biāo)和豐富的配置選項,可以滿足不同的日志需求,通過合理配置Serilog,可以方便地記錄應(yīng)用程序的運行日志,感興趣的可以了解一下

Serilog 的基本概念

日志級別

Serilog 支持多種日志級別,從低到高依次是:

  • Verbose(詳細(xì)):記錄最詳細(xì)的信息,通常用于調(diào)試。
  • Debug(調(diào)試):記錄調(diào)試信息,比 Verbose 稍低。
  • Information(信息):記錄正常運行時的信息。
  • Warning(警告):記錄可能影響正常運行的警告信息。
  • Error(錯誤):記錄運行時的錯誤。
  • Fatal(致命):記錄導(dǎo)致應(yīng)用程序崩潰的致命錯誤。

日志輸出目標(biāo)(Sink)

Serilog 支持多種日志輸出目標(biāo),例如:

  • 控制臺(Console
  • 文件(File
  • 數(shù)據(jù)庫(如 SQL Server、MySQL
  • 云存儲(如 Azure Blob StorageAWS S3
  • 日志聚合工具(如 Elasticsearch、Seq

安裝Serilog

C# 項目中使用 Serilog,首先需要安裝相關(guān)的 NuGet 包。以下是一些常用的 Serilog 包:

  • Serilog:核心日志庫。
  • Serilog.Sinks.Console:將日志輸出到控制臺。
  • Serilog.Sinks.File:將日志輸出到文件。
  • Serilog.Sinks.MSSqlServer:將日志輸出到 SQL Server 數(shù)據(jù)庫。
  • Serilog.Settings.Configuration:通過配置文件(如 appsettings.json)配置 Serilog
    可以通過 NuGet 包管理器安裝這些包。

配置Serilog

程序代碼中配置

在代碼中直接配置 Serilog 是最直接的方式。以下是一個簡單的示例:

using Serilog;
using Serilog.Sinks.File;

class Program
{
    static void Main(string[] args)
    {
        // 配置日志
        Log.Logger = new LoggerConfiguration()
            .MinimumLevel.Debug() // 設(shè)置最低日志級別
            .WriteTo.Console()    // 輸出到控制臺
            .WriteTo.File("logs/log.txt", rollingInterval: RollingInterval.Day) // 輸出到文件,按天滾動
            .CreateLogger();

        // 寫入日志
        Log.Information("This is an information message.");
        Log.Warning("This is a warning message.");
        Log.Error("This is an error message.");

        // 關(guān)閉日志
        Log.CloseAndFlush();
    }
}

通過配置文件配置

Serilog 也支持通過配置文件(如 appsettings.json)進行配置,這種方式更加靈活。首先需要安裝 Serilog.Settings.Configuration 包:
然后在 appsettings.json 文件中配置 Serilog

{
  "Serilog": {
    "MinimumLevel": "Debug",
    "WriteTo": [
      {
        "Name": "Console"
      },
      {
        "Name": "File",
        "Args": {
          "path": "logs/log.txt",
          "rollingInterval": "Day"
        }
      }
    ]
  }
}

在程序中加載配置文件并初始化 Serilog

using Microsoft.Extensions.Configuration;
using Serilog;

class Program
{
    static void Main(string[] args)
    {
        // 加載配置文件
        var configuration = new ConfigurationBuilder()
            .AddJsonFile("appsettings.json")
            .Build();

        // 配置 Serilog
        Log.Logger = new LoggerConfiguration()
            .ReadFrom.Configuration(configuration)
            .CreateLogger();

        // 寫入日志
        Log.Information("This is an information message.");
        Log.Warning("This is a warning message.");
        Log.Error("This is an error message.");

        // 關(guān)閉日志
        Log.CloseAndFlush();
    }
}

常見配置選項

日志級別

可以通過 MinimumLevel 設(shè)置最低日志級別,低于該級別的日志將不會被記錄。例如:

Log.Logger = new LoggerConfiguration()
    .MinimumLevel.Warning() // 只記錄 Warning 及以上級別的日志
    .CreateLogger();

文件日志

文件日志是常用的日志輸出方式。Serilog 提供了豐富的文件日志配置選項,例如:

  • 文件路徑:指定日志文件的存儲路徑。
  • 滾動策略:按時間(如按天、按小時)或大小滾動日志文件。
  • 保留策略:設(shè)置保留的日志文件數(shù)量或天數(shù)。
Log.Logger = new LoggerConfiguration()
    .WriteTo.File("logs/log.txt", rollingInterval: RollingInterval.Day, retainedFileCountLimit: 7)
    .CreateLogger();

控制臺日志

控制臺日志可以實時顯示日志信息,方便調(diào)試??梢酝ㄟ^以下方式配置控制臺日志:

Log.Logger = new LoggerConfiguration()
    .WriteTo.Console(outputTemplate: "[{Timestamp:HH:mm:ss} {Level}] {Message}{NewLine}{Exception}")
    .CreateLogger();

其中,outputTemplate 可以自定義日志的輸出格式。

數(shù)據(jù)庫日志

Serilog 支持將日志輸出到多種數(shù)據(jù)庫,例如 SQL ServerMySQL 等。以下是將日志輸出到 SQL Server 數(shù)據(jù)庫的示例:

Log.Logger = new LoggerConfiguration()
    .WriteTo.MSSqlServer(
        connectionString: "Server=your_server;Database=your_database;User Id=your_user;Password=your_password;",
        tableName: "Logs",
        autoCreateSqlTable: true)
    .CreateLogger();

在數(shù)據(jù)庫中,Serilog 會自動創(chuàng)建一個日志表(如 Logs),并存儲日志信息。

使用Serilog在ASP.NET Core中

Serilog 也可以與 ASP.NET Core 集成,為 Web 應(yīng)用程序提供日志功能。以下是一個集成的示例:

安裝NuGet包

安裝以下 NuGet 包:

  • Serilog.AspNetCore
  • Serilog.Sinks.Console
  • Serilog.Sinks.File

配置Serilog

Program.cs 文件中配置 Serilog

using Serilog;

var builder = WebApplication.CreateBuilder(args);

// 配置 Serilog
Log.Logger = new LoggerConfiguration()
    .MinimumLevel.Debug()
    .WriteTo.Console()
    .WriteTo.File("logs/log.txt", rollingInterval: RollingInterval.Day)
    .CreateLogger();

builder.Host.UseSerilog();

var app = builder.Build();

app.MapGet("/", () => "Hello World!");

app.Run();

ASP.NET Core 中,Serilog 會自動記錄應(yīng)用程序的生命周期事件(如啟動、停止)以及中間件的日志。

日志上下文

Serilog 支持日志上下文,可以在日志中添加上下文信息,例如用戶 ID、請求 ID 等。以下是一個示例:

using Serilog;
using Serilog.Context;

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

using (LogContext.PushProperty("UserId", 12345))
{
    Log.Information("User {UserId} performed an action.", 12345);
}

在日志中,UserId 將作為上下文信息被記錄。

總結(jié)

Serilog 是一個功能強大且靈活的日志庫,適用于各種 .NET 應(yīng)用程序。它支持多種日志輸出目標(biāo)和豐富的配置選項,可以滿足不同的日志需求。通過合理配置 Serilog,可以方便地記錄應(yīng)用程序的運行日志,幫助開發(fā)人員進行調(diào)試和問題排查。

到此這篇關(guān)于C# Serilog 日志的使用小結(jié)的文章就介紹到這了,更多相關(guān)C# Serilog 日志內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#序列化與反序列化集合對象并進行版本控制

    C#序列化與反序列化集合對象并進行版本控制

    這篇文章介紹了C#序列化與反序列化集合對象并實現(xiàn)版本控制的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09
  • C#操作SQLite數(shù)據(jù)庫方法小結(jié)(創(chuàng)建,連接,插入,查詢,刪除等)

    C#操作SQLite數(shù)據(jù)庫方法小結(jié)(創(chuàng)建,連接,插入,查詢,刪除等)

    這篇文章主要介紹了C#操作SQLite數(shù)據(jù)庫方法,包括針對SQLite數(shù)據(jù)庫的創(chuàng)建,連接,插入,查詢,刪除等操作,并提供了一個SQLite的封裝類,需要的朋友可以參考下
    2016-07-07
  • 手動編譯C#代碼的方法

    手動編譯C#代碼的方法

    在本文里小編給大家分享的是關(guān)于手動編譯C#代碼的方法和步驟,對此有需要的朋友們可以學(xué)習(xí)下。
    2018-12-12
  • C# 編碼好習(xí)慣,獻給所有熱愛c#的同志

    C# 編碼好習(xí)慣,獻給所有熱愛c#的同志

    c#編寫者,需要培養(yǎng)的一些好習(xí)慣
    2009-02-02
  • 一篇文章教會你用Unity制作網(wǎng)格地圖生成組件

    一篇文章教會你用Unity制作網(wǎng)格地圖生成組件

    網(wǎng)格地圖這個功能在策略型游戲中應(yīng)用比較廣泛,基本情況下會將地圖分割成正方形網(wǎng)格或者六邊形網(wǎng)格,這篇文章主要給大家介紹了如何通過一篇文章學(xué)會用Unity制作網(wǎng)格地圖生成組件的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • C#原型模式之如何通過克隆對象來優(yōu)化創(chuàng)建過程

    C#原型模式之如何通過克隆對象來優(yōu)化創(chuàng)建過程

    原型模式是一種創(chuàng)建型設(shè)計模式,通過克隆現(xiàn)有對象來創(chuàng)建新對象,避免重復(fù)的創(chuàng)建成本和復(fù)雜的初始化過程,它適用于對象創(chuàng)建過程復(fù)雜、需要大量相似對象或避免重復(fù)初始化的場景,本文介紹C#原型模式之如何通過克隆對象來優(yōu)化創(chuàng)建過程,感興趣的朋友一起看看吧
    2025-03-03
  • c#線程同步使用詳解示例

    c#線程同步使用詳解示例

    這篇文章主要介紹了c#線程同步使用方法,介紹幾種常用的C#進行線程同步的方式,需要的朋友可以參考下
    2014-02-02
  • c# Newtonsoft.Json 常用方法總結(jié)

    c# Newtonsoft.Json 常用方法總結(jié)

    這篇文章主要介紹了c# Newtonsoft.Json 常用方法的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-02-02
  • WPF自定義路由事件的實例教程

    WPF自定義路由事件的實例教程

    WPF中有兩種事件模型,一種是在WinForm時代就存在的CLR事件,另一種是WPF時代的路由事件,這篇文章主要給大家介紹了關(guān)于WPF自定義路由事件的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • C#中泛型舉例List<T>與DataTable相互轉(zhuǎn)換

    C#中泛型舉例List<T>與DataTable相互轉(zhuǎn)換

    這篇文章介紹了C#中泛型舉例List<T>與DataTable相互轉(zhuǎn)換的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05

最新評論