.net core下優秀的日誌框架使用解析,附源代碼

来源:https://www.cnblogs.com/hanbing81868164/archive/2023/11/26/17856513.html
-Advertisement-
Play Games

在 .NET Core 中,日誌是一個非常重要的組件,它可以幫助我們記錄應用程式的運行情況,以便在出現問題時進行排查。在本文中,我們將介紹五個優秀的 .NET Core 日誌框架,它們分別是 Serilog、NLog、Log4Net、Microsoft.Extensions.Logging 和 Lo ...


在 .NET Core 中,日誌是一個非常重要的組件,它可以幫助我們記錄應用程式的運行情況,以便在出現問題時進行排查。在本文中,我們將介紹五個優秀的 .NET Core 日誌框架,它們分別是 Serilog、NLog、Log4Net、
Microsoft.Extensions.Logging 和 Loupe。我們將為每個框架提供使用方法及步驟,並提供源代碼示例。

1. Serilog

Serilog 是一個高度可擴展的 .NET Core 日誌框架,它支持多種輸出格式,包括控制台、文件、Elasticsearch 等。Serilog 的特點是可配置性強,支持鏈式調用,可以自定義日誌格式和輸出方式。

使用方法

  1. 安裝 Serilog NuGet 包:
Install-Package Serilog
Install-Package Serilog.Sinks.Console
  1. 在程式入口處配置 Serilog:
using Serilog;

public static void Main(string[] args)
{
    Log.Logger = new LoggerConfiguration()
        .MinimumLevel.Debug()
        .WriteTo.Console()
        .CreateLogger();

    // ...
}
  1. 記錄日誌:
Log.Information("This is an information message.");
Log.Warning("This is a warning message.");
Log.Error("This is an error message.");

示例代碼

using Serilog;

public class Program
{
    public static void Main(string[] args)
    {
        Log.Logger = new LoggerConfiguration()
            .MinimumLevel.Debug()
            .WriteTo.Console()
            .CreateLogger();

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

        Log.CloseAndFlush();
    }
}

2. NLog

NLog 是一個流行的 .NET Core 日誌框架,它支持多種輸出方式,包括控制台、文件、資料庫等。NLog 的特點是配置簡單,易於使用,可以自定義日誌格式和輸出方式。

使用方法

  1. 安裝 NLog NuGet 包:
Install-Package NLog
  1. 在程式入口處配置 NLog:
using NLog.Web;

public static void Main(string[] args)
{
    var logger = NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger();

    // ...
}
  1. 記錄日誌:
logger.Info("This is an information message.");
logger.Warn("This is a warning message.");
logger.Error("This is an error message.");

示例代碼

using NLog.Web;

public class Program
{
    public static void Main(string[] args)
    {
        var logger = NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger();

        logger.Info("Hello, NLog!");

        LogManager.Shutdown();
    }
}

3. Log4Net

Log4Net 是一個成熟的 .NET Core 日誌框架,它支持多種輸出方式,包括控制台、文件、資料庫等。Log4Net 的特點是穩定性高,配置靈活,可以自定義日誌格式和輸出方式。

使用方法

  1. 安裝 Log4Net NuGet 包:
Install-Package log4net
  1. 在程式入口處配置 Log4Net:
using log4net;
using log4net.Config;

public static void Main(string[] args)
{
    XmlConfigurator.Configure(new FileInfo("log4net.config"));

    var logger = LogManager.GetLogger(typeof(Program));

    // ...
}
  1. 記錄日誌:
logger.Info("This is an information message.");
logger.Warn("This is a warning message.");
logger.Error("This is an error message.");

示例代碼

using log4net;
using log4net.Config;

public class Program
{
    private static readonly ILog logger = LogManager.GetLogger(typeof(Program));

    public static void Main(string[] args)
    {
        XmlConfigurator.Configure(new FileInfo("log4net.config"));

        logger.Info("Hello, Log4Net!");
    }
}

4. Microsoft.Extensions.Logging


Microsoft.Extensions.Logging 是 .NET Core 自帶的日誌框架,它支持多種輸出方式,包括控制台、文件、EventSource 等。Microsoft.Extensions.Logging 的特點是易於集成,可以與 .NET Core 的依賴註入框架一起使用。

使用方法

  1. 安裝 Microsoft.Extensions.Logging NuGet 包:
Install-Package Microsoft.Extensions.Logging
  1. 在程式入口處配置 Microsoft.Extensions.Logging:
using Microsoft.Extensions.Logging;

public static void Main(string[] args)
{
    var loggerFactory = LoggerFactory.Create(builder =>
    {
        builder.AddConsole();
    });

    var logger = loggerFactory.CreateLogger<Program>();

    // ...
}
  1. 記錄日誌:
logger.LogInformation("This is an information message.");
logger.LogWarning("This is a warning message.");
logger.LogError("This is an error message.");

示例代碼

using Microsoft.Extensions.Logging;

public class Program
{
    private static readonly ILogger logger;

    static Program()
    {
        var loggerFactory = LoggerFactory.Create(builder =>
        {
            builder.AddConsole();
        });

        logger = loggerFactory.CreateLogger<Program>();
    }

    public static void Main(string[] args)
    {
        logger.LogInformation("Hello, Microsoft.Extensions.Logging!");
    }
}

5. Loupe

Loupe 是一個全功能的 .NET Core 日誌框架,它支持多種輸出方式,包括控制台、文件、資料庫、Web 界面等。Loupe 的特點是功能強大,支持分析、監控、報警等多種高級功能。

使用方法

  1. 安裝 Loupe NuGet 包:
Install-Package Gibraltar.Agent
  1. 在程式入口處配置 Loupe:
using Gibraltar.Agent;

public static void Main(string[] args)
{
    Log.StartSession();

    // ...
}
  1. 記錄日誌:
Log.Information("This is an information message.");
Log.Warning("This is a warning message.");
Log.Error("This is an error message.");

示例代碼

using Gibraltar.Agent;

public class Program
{
    public static void Main(string[] args)
    {
        Log.StartSession();

        Log.Information("Hello, Loupe!");

        Log.EndSession();
    }
}

以上是五個優秀的 .NET Core 日誌框架的介紹和使用方法。這些框架各有特點,可以根據實際需求選擇合適的框架。無論選擇哪個框架,記得在程式入口處配置日誌,併在適當的地方記錄日誌,以便在出現問題時進行排查。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Bug1 自定義被限流的後續操作@SentinelResource(blockHandler = "blockHandler"),其中blockHandler處理函數不執行 前置條件 //定義的資源 @GetMapping("/resource") @SentinelResource(value = ...
  • 電腦安全和數據隱私是現代應用程式設計中至關重要的方面。為了確保數據的機密性和完整性,常常需要使用加密和解密演算法。C++是一種廣泛使用的編程語言,提供了許多加密和解密演算法的實現。本文將介紹一些在C++中常用的加密與解密演算法,這其中包括Xor異或、BASE64、AES、MD5、SHA256、RSA等。 ...
  • 位運算 題目背景 題目由 daiyulong20120222 創作(me) 並由 QBW1117完善以及數據 。 題目描述 給定兩個數\(x,y\) ,在給定一個位運算符號 \(c\)。 請你列出 \(x,y\) 進行 \(c\) 位運算是的算數豎式式。 註: 豎式這麼列: 顯示出兩個數的完整二進位 ...
  • 主要介紹了第一個Spring MVC程式的環境搭建、父子項目結構、Tomcat配置、配置文件。對DispatcherServlet的講解,2個核心類型:1.RequestMappingHandlerMapping 2.RequestMappingHandlerAdapter,視圖解析器ViewRes... ...
  • matplotlib是基於python生態開發的一個可視化繪圖庫,它的出現讓python在數據分析及機器學習方面占了重要的一部分,目前很多數據分析及機器學習相關方面的工程都有使用到這個庫,並且由於其簡單易用,安裝簡單等方面的優勢深得廣大開發者的喜愛。 ...
  • HtmlAgilityPack是一個.NET平臺下的HTML解析庫,它可以將HTML文本轉換為DOM文檔對象,方便我們對HTML文本進行操作和分析。HtmlAgilityPack支持XPath語法,可以通過XPath表達式來獲取DOM節點,同時還提供了一些方便的API,可以實現HTML文本的解析、修 ...
  • MVC 的過濾器(Filters)也翻譯為“篩選器”。但是老周更喜歡翻譯為“過濾器”,意思上更好理解。 既然都叫過濾器了,就是在MVC的操作方法調用前後進行特殊處理的類型。比如: a、此調用是否已授權? b、在模型綁定之前要不要修改數據源?(可能含有兒童不宜的數據) c、在調用MVC方法前要不要改一 ...
  • 需要有的知識點: c# 基礎以及c#高級基礎 Ado.net 基礎 SqlServer 以及MySQL (都需要高級部分) Asp.net Mvc Core 基礎 1. 新手的煩惱 (1) SQL 拼不對,錯還不會找 (2) 開發效率低 (3) 如果發現欄位需要重命名,得挨個地方去修改 (4) 老闆 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...