不要用第三方日誌包了Microsoft.Extensions.Logging功能就很強大

来源:https://www.cnblogs.com/hanbing81868164/archive/2023/12/05/17877888.html
-Advertisement-
Play Games

在.NET中,Microsoft.Extensions.Logging是一個廣泛使用的日誌庫,用於記錄應用程式的日誌信息。它提供了豐富的功能和靈活性,使開發人員能夠輕鬆地記錄各種類型的日誌,並將其輸出到不同的目標,包括日誌文件。本文將詳細介紹Microsoft.Extensions.Logging的 ...


在.NET中,
Microsoft.Extensions.Logging是一個廣泛使用的日誌庫,用於記錄應用程式的日誌信息。它提供了豐富的功能和靈活性,使開發人員能夠輕鬆地記錄各種類型的日誌,並將其輸出到不同的目標,包括日誌文件。本文將詳細介紹Microsoft.Extensions.Logging的各種基礎功能以及如何按天生成日誌文件。

一、Microsoft.Extensions.Logging基礎功能

1. 創建Logger

首先,我們需要創建一個Logger實例,以便在應用程式中記錄日誌。以下是創建Logger的基本方法:

using Microsoft.Extensions.Logging;

var loggerFactory = LoggerFactory.Create(builder =>
{
    builder.AddConsole(); // 輸出日誌到控制台
});

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

在上面的示例中,我們首先創建了一個LoggerFactory實例,然後通過它創建了一個Logger。我們還使用AddConsole方法將日誌輸出到控制台。

2. 記錄日誌消息

一旦有Logger實例,我們可以使用它來記錄不同級別的日誌消息。
Microsoft.Extensions.Logging定義了以下日誌級別(按嚴重性遞增排列):

  • Trace
  • Debug
  • Information
  • Warning
  • Error
  • Critical

下麵是如何使用Logger記錄不同級別的日誌消息的示例:

logger.LogInformation("這是一條信息日誌");
logger.LogWarning("這是一條警告日誌");
logger.LogError("這是一條錯誤日誌");
logger.LogCritical("這是一條嚴重錯誤日誌");

3. 提供上下文信息

通常,我們需要將一些上下文信息記錄到日誌中,以幫助排查問題。可以使用LogInformation等方法的重載版本,傳遞額外的參數,如下:

var userId = 123;
logger.LogInformation("用戶 {UserId} 登錄成功", userId);

在上述示例中,我們將userId作為參數傳遞給日誌消息,以便將其包含在日誌中。

4. 使用日誌範圍

有時,我們希望在一段代碼塊中記錄一組相關日誌消息,並希望這些消息具有相同的上下文信息。這時可以使用LogScope,如下所示:

using (logger.BeginScope("交易處理 - 訂單 {OrderId}", orderId))
{
    logger.LogInformation("訂單處理中...");
    // 執行一些訂單處理邏輯
    logger.LogInformation("訂單處理完成");
}

在上述示例中,我們使用BeginScope方法創建了一個日誌範圍,將其包含在指定的上下文信息中。在範圍內的所有日誌消息都會自動包含這些上下文信息。

5. 配置日誌級別

我們可以在應用程式中配置所需的最低日誌級別,以決定哪些日誌消息將被記錄。通常,這是在應用程式的配置文件中完成的。以下是一個示例:

var loggerFactory = LoggerFactory.Create(builder =>
{
    builder.AddConsole();
    builder.SetMinimumLevel(LogLevel.Information); // 設置最低日誌級別
});

在上述示例中,我們使用SetMinimumLevel方法來配置最低日誌級別。只有達到或高於指定級別的日誌消息才會被記錄。

二、按天生成日誌文件

現在,讓我們來看看如何按天生成日誌文件。通常,我們會希望將日誌消息記錄到文件中,並按日期對日誌文件進行歸檔。

1. 安裝相關包

首先,我們需要安裝一些必要的包,以便實現按天生成日誌文件。使用NuGet包管理器或.NET CLI可以輕鬆完成這一步驟:

dotnet add package Karambolo.Extensions.Logging.File

2. 配置文件日誌提供程式

接下來,我們需要配置文件日誌提供程式,以便將日誌消息記錄到文件中。以下是如何配置文件提供程式的示例:

var loggerFactory = LoggerFactory.Create(builder =>
{
    builder.AddFile("logs/myapp-{Date}.txt");
    builder.SetMinimumLevel(LogLevel.Information);
});

在上述示例中,我們使用AddFile方法配置文件日誌提供程式,並指定日誌文件的名稱模式。{Date}將根據日誌消息的日期自動替換為實際日期。

3. 示例代碼

以下是一個完整的示例代碼,演示瞭如何使用
Microsoft.Extensions.Logging按天生成日誌文件:

using System;
using Microsoft.Extensions.Logging;
using Karambolo.Extensions.Logging.File;

class Program
{
    static void Main()
    {
        var loggerFactory = LoggerFactory.Create(builder =>
        {
            builder.AddFile("logs/myapp-{Date}.txt");
            builder.SetMinimumLevel(LogLevel.Information);
        });

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

        for (int i = 0; i < 10; i++)
        {
            logger.LogInformation("這是一條信息日誌 - {LogCount}", i);
        }
    }
}

上述示例中,我們配置了文件日誌提供程式,日誌文件的名稱模式包含了{Date},並迴圈記錄了10條日誌消息。每天,日誌文件將被歸檔到不同的文件中,以便跟蹤和檢查以前的日誌。


Microsoft.Extensions.Logging是.NET中強大的日誌庫,可以用於記錄各種類型的日誌消息。通過配置文件日誌提供程式,我們可以按天生成日誌文件,以便更好地管理和分析日誌。

 


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

-Advertisement-
Play Games
更多相關文章
  • 9 Docker 在 Docker 鏡像層內預覽文件 現在可以在 Services(服務)工具視窗中輕鬆訪問和預覽 Docker 鏡像層的內容。 從列表選擇鏡像,選擇 Show layers(顯示層),然後點擊 Analyze image for more information(分析鏡像以獲得更多 ...
  • 原文: https://openaigptguide.com/chatgpt-similar%20software/ ChatGPT是一款由美國OpenAI公司開發的人工智慧語言模型,類似的軟體有: 火山寫作(Volcano Writing):它是一款用戶友好的寫作軟體,可以自動生成具有創造性和連貫 ...
  • 前言 我python開發的GUI界面(圖形用戶界面)一直是tkinter,打包exe一直是Pyinstaller。但是打包出來的exe圖標、狀態欄圖標、窗體左上角圖標一直是預設的羽毛,我想自定義。 效果 最後使用base64創建臨時ico解決了該問題 步驟 創建icoToBase64.py,內容如下 ...
  • 在Java 21中,除了推出很多新特性之外,一些Bug修複,也需要註意一下。因為這些改變可能在升級的時候,造成影響。 Double.toString()和Float.toString()的精度問題修複 比如:對於Double.String(1e23): 在Java 19後,輸出內容為:1.0E23 ...
  • webjars類型的前端jar包 我們可以將公用的js,css,html,vue,shtml打包成一個jar,然後在其他項目中引用,這樣就不用每個項目都去引用一遍了,這樣就可以實現前端的公用了。 1.創建一個maven項目,添加依賴和插件 <dependencies> <!-- 依賴webjars- ...
  • pdf轉docx文檔是一個非常實用的功能,我只是簡單地實現了一個可視化界面供用戶操作。我這麼做的目的之一是想更多地掌握gradio的使用方法,同時也加強對Python流行第三方包的熟悉程度,因為這些第三方包是快速開發的關鍵。我也希望你能從中有所收穫,我已經公佈了本期的源碼地址,如果你覺得還不錯,或者... ...
  • 1. 什麼是Mvc 模型-視圖-控制器 (MVC) 體繫結構模式將應用程式分成 3 個主要組件組:視圖模型、視圖和控制器。 此模式有助於實現關註點分離。 使用此模式,用戶請求被路由到控制器,後者負責使用模型來執行用戶操作和/或檢索查詢結果。 控制器選擇要顯示給用戶的視圖,併為其提供所需的任何模型數據 ...
  • Options是微軟提供的選項模塊,該模塊依賴於容器使用。除了微軟的IServiceCollection,當然也可以使用其它的依賴註入容器。本文演示如何在prism中使用Options。 創建應用項目 創建一個Avalonia應用(或其它類型應用),然後使用NuGet包管理器添加Prism.DryI ...
一周排行
    -Advertisement-
    Play Games
  • 前言 微服務架構已經成為搭建高效、可擴展系統的關鍵技術之一,然而,現有許多微服務框架往往過於複雜,使得我們普通開發者難以快速上手並體驗到微服務帶了的便利。為瞭解決這一問題,於是作者精心打造了一款最接地氣的 .NET 微服務框架,幫助我們輕鬆構建和管理微服務應用。 本框架不僅支持 Consul 服務註 ...
  • 先看一下效果吧: 如果不會寫動畫或者懶得寫動畫,就直接交給Blend來做吧; 其實Blend操作起來很簡單,有點類似於在操作PS,我們只需要設置關鍵幀,滑鼠點來點去就可以了,Blend會自動幫我們生成我們想要的動畫效果. 第一步:要創建一個空的WPF項目 第二步:右鍵我們的項目,在最下方有一個,在B ...
  • Prism:框架介紹與安裝 什麼是Prism? Prism是一個用於在 WPF、Xamarin Form、Uno 平臺和 WinUI 中構建鬆散耦合、可維護和可測試的 XAML 應用程式框架 Github https://github.com/PrismLibrary/Prism NuGet htt ...
  • 在WPF中,屏幕上的所有內容,都是通過畫筆(Brush)畫上去的。如按鈕的背景色,邊框,文本框的前景和形狀填充。藉助畫筆,可以繪製頁面上的所有UI對象。不同畫筆具有不同類型的輸出( 如:某些畫筆使用純色繪製區域,其他畫筆使用漸變、圖案、圖像或繪圖)。 ...
  • 前言 嗨,大家好!推薦一個基於 .NET 8 的高併發微服務電商系統,涵蓋了商品、訂單、會員、服務、財務等50多種實用功能。 項目不僅使用了 .NET 8 的最新特性,還集成了AutoFac、DotLiquid、HangFire、Nlog、Jwt、LayUIAdmin、SqlSugar、MySQL、 ...
  • 本文主要介紹攝像頭(相機)如何採集數據,用於類似攝像頭本地顯示軟體,以及流媒體數據傳輸場景如傳屏、視訊會議等。 攝像頭採集有多種方案,如AForge.NET、WPFMediaKit、OpenCvSharp、EmguCv、DirectShow.NET、MediaCaptre(UWP),網上一些文章以及 ...
  • 前言 Seal-Report 是一款.NET 開源報表工具,擁有 1.4K Star。它提供了一個完整的框架,使用 C# 編寫,最新的版本採用的是 .NET 8.0 。 它能夠高效地從各種資料庫或 NoSQL 數據源生成日常報表,並支持執行複雜的報表任務。 其簡單易用的安裝過程和直觀的設計界面,我們 ...
  • 背景需求: 系統需要對接到XXX官方的API,但因此官方對接以及管理都十分嚴格。而本人部門的系統中包含諸多子系統,系統間為了穩定,程式間多數固定Token+特殊驗證進行調用,且後期還要提供給其他兄弟部門系統共同調用。 原則上:每套系統都必須單獨接入到官方,但官方的接入複雜,還要官方指定機構認證的證書 ...
  • 本文介紹下電腦設備關機的情況下如何通過網路喚醒設備,之前電源S狀態 電腦Power電源狀態- 唐宋元明清2188 - 博客園 (cnblogs.com) 有介紹過遠程喚醒設備,後面這倆天瞭解多了點所以單獨加個隨筆 設備關機的情況下,使用網路喚醒的前提條件: 1. 被喚醒設備需要支持這WakeOnL ...
  • 前言 大家好,推薦一個.NET 8.0 為核心,結合前端 Vue 框架,實現了前後端完全分離的設計理念。它不僅提供了強大的基礎功能支持,如許可權管理、代碼生成器等,還通過採用主流技術和最佳實踐,顯著降低了開發難度,加快了項目交付速度。 如果你需要一個高效的開發解決方案,本框架能幫助大家輕鬆應對挑戰,實 ...