.NET 6 NLog

来源:https://www.cnblogs.com/hkzw/archive/2023/03/15/17217251.html
-Advertisement-
Play Games

1、安裝 NLog.Web.AspNetCore 包 2、新增Configs文件夾,在Configs文件夾下新增nlog.config文件 nlog.config文件內容如下 <?xml version="1.0" encoding="utf-8" ?> <nlog xmlns="http://ww ...


1、安裝 NLog.Web.AspNetCore 包

2、新增Configs文件夾,在Configs文件夾下新增nlog.config文件

nlog.config文件內容如下

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

    <targets>
        <!--此部分中的所有目標將自動非同步-->
        <target name="InfoFile" xsi:type="AsyncWrapper">
            <!--項目日誌保存文件路徑說明fileName="${basedir}/保存目錄,以年月日的格式創建/${shortdate}/${記錄器名稱}-${單級記錄}-${shortdate}.txt"-->
            <target name="log_file" xsi:type="File"
                    fileName="${basedir}/Logs/${shortdate}/${shortdate}-InfoFile.txt"
                    layout="${longdate} | ${message} ${onexception:${exception:format=message} ${newline} ${stacktrace} ${newline}"
                    archiveFileName="${basedir}/archives/${logger}-${level}-${shortdate}-{#####}.txt"
                    archiveAboveSize="102400"
                    archiveNumbering="Sequence"
                    concurrentWrites="true"
                    keepFileOpen="false" />
        </target>

        <target name="WarnFile" xsi:type="AsyncWrapper">
            <!--項目日誌保存文件路徑說明fileName="${basedir}/保存目錄,以年月日的格式創建/${shortdate}/${記錄器名稱}-${單級記錄}-${shortdate}.txt"-->
            <target name="log_file" xsi:type="File"
                    fileName="${basedir}/Logs/${shortdate}/${shortdate}-WarnFile.txt"
                    layout="${longdate} | ${message} ${onexception:${exception:format=message} ${newline} ${stacktrace} ${newline}"
                    archiveFileName="${basedir}/archives/${logger}-${level}-${shortdate}-{#####}.txt"
                    archiveAboveSize="102400"
                    archiveNumbering="Sequence"
                    concurrentWrites="true"
                    keepFileOpen="false" />
        </target>
        
        <!--使用可自定義的著色將日誌消息寫入控制台-->
        <target name="colorConsole" xsi:type="ColoredConsole" layout="[${date:format=HH\:mm\:ss}]:${message} ${exception:format=message}" />
    </targets>

    <!--規則配置,final - 最終規則匹配後不處理任何規則-->
    <rules>
        <logger name="Microsoft.*" minlevel="Info" writeTo="" final="true" />
        <logger name="*" minlevel="Info" writeTo="InfoFile" />
        <logger name="*" minlevel="Warn" writeTo="WarnFile" />
        <!--<logger name="*" minlevel="Warn" writeTo="colorConsole" /> 如果需要列印在控制台則可以這樣配置-->
    </rules>

 

3、Program.cs 中 註入

// NLog:註冊Nlog組件
builder.Logging.AddNLog("Configs/nlog.config");

4、新增幫助類LoggerHelper

    /// <summary>
    /// nLog使用幫助類
    /// </summary>
    public class LoggerHelper
    {
        /// <summary>
        /// 實例化nLog,即為獲取配置文件相關信息(獲取以當前正在初始化的類命名的記錄器)
        /// </summary>
        private readonly static NLog.Logger _logger = LogManager.GetCurrentClassLogger();

        private static LoggerHelper _obj;

        public static LoggerHelper _
        {
            get => _obj ?? (new LoggerHelper());
            set => _obj = value;
        }

        #region Debug,調試
        public static void Debug(string msg)
        {
            _logger.Debug(msg);
        }

        public void Debug(string msg, Exception err)
        {
            _logger.Debug(err, msg);
        }
        #endregion

        #region Info,信息
        public static void Info(string msg)
        {
            _logger.Info(msg);
        }

        public void Info(string msg, Exception err)
        {
            _logger.Info(err, msg);
        }
        #endregion

        #region Warn,警告
        public static void Warn(string msg)
        {
            _logger.Warn(msg);
        }

        public void Warn(string msg, Exception err)
        {
            _logger.Warn(err, msg);
        }
        #endregion

        #region Trace,追蹤
        public void Trace(string msg)
        {
            _logger.Trace(msg);
        }

        public void Trace(string msg, Exception err)
        {
            _logger.Trace(err, msg);
        }
        #endregion

        #region Error,錯誤
        public void Error(string msg)
        {
            _logger.Error(msg);
        }

        public void Error(string msg, Exception err)
        {
            _logger.Error(err, msg);
        }
        #endregion

        #region Fatal,致命錯誤
        public void Fatal(string msg)
        {
            _logger.Fatal(msg);
        }

        public void Fatal(string msg, Exception err)
        {
            _logger.Fatal(err, msg);
        }
        #endregion
    }

5、調用

在介面或者需要寫入日誌的地方

LoggerHelper.Info("TEST111111111111111111111111111111111111111111111");
            LoggerHelper.Warn("TEST222222222222222222222222222222222222222222"); 

 

說明:本內容僅僅作為學習記錄,無任何商業目的。


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

-Advertisement-
Play Games
更多相關文章
  • TypeScript 備忘清單 IT寶庫TypeScript開發速查清單包含最重要基礎、泛型、方法、class 等 TypeScript 強類型編程語言語法的快速參考備忘單。初學者的完整快速參考入門,為開發人員分享快速參考備忘單。 開發速查表大綱 入門 Interface 介紹 內置類型基元 常見的 ...
  • Qt 學習筆記全系列傳送門: Qt 學習筆記 - 第一章 - 快速開始、信號與槽 Qt 學習筆記 - 第二章 - 添加圖片、佈局、界面切換 Qt 學習筆記 - 第三章 - Qt的三駕馬車之一 - 串口編程 + 程式打包成Windows軟體 【本章】Qt 學習筆記 - 第四章 - Qt的三駕馬車之二 ...
  • 背景 日常開發中,經常需要對一些響應不是很快的關鍵業務介面增加防重功能,即短時間內收到的多個相同的請求,只處理一個,其餘不處理,避免產生臟數據。這和冪等性(idempotency)稍微有點區別,冪等性要求的是對重覆請求有相同的效果和結果,通常需要在介面內部執行業務操作前檢查狀態;而防重可以認為是一個 ...
  • 預覽 技術實現 看過我上篇在 WPF 中實現 OpenGL 與 D3D 渲染的同學應該知道,我是依靠 WGL 中 WGL_NV_DX_interop 擴展與 D3D Surface 關聯併在使用該 Surface 實現渲染。 所以我們這次實現也是如此,但與 WPF 不同的是 WinUI 支持 D3D ...
  • 需求 swagger頁面按標簽Tags分組顯示。 沒有打標簽Tags的介面,預設歸到"未分組"。 分組內按介面路徑排序 說明 為什麼沒有使用GroupName對介面進行分組? 暫時不需要,以及不想點擊swagger頁面右上角那個下拉框。 當然Tags和GroupName不衝突,不影響通過GroupN ...
  • 背景: 我們項目一開始的所有提示都是中文,後來要做國際化。發現項目中的帶雙引號的中文居然有 2.3 w 多條!!!簡直讓人欲哭無淚... 如果使用人工改的話,首先不說正確率了。光是效率都是難難難。所以發揮了自己的才能寫了一個自動化工具。 思路: 首選讀取項目文件夾下的所有文件路徑 篩選路徑文件尾碼. ...
  • 接下來我們對依賴屬性進行一個簡單的剖析,從以下幾個方面入手吧。 1 - 為什麼是public static 首先說下為什麼是public 答:WPF有一種特殊屬性,叫附加屬性,需要直接訪問xxxxProperty的方法才能實現,所以xxxxProperty是public 的。 其次為什麼是靜態sta ...
  • 1. 選項 前面講完了.NET Core 下的配置系統,我們可以通過 IConfiguration 服務從各種來源的配置中讀取到配置信息,但是每次要用的時候都通過 Iconfiguration 讀取配置文件會比較不方便,而且效率低。.NET Core 體系下提供了一個選項系統,該功能用於實現以強類型 ...
一周排行
    -Advertisement-
    Play Games
  • 最近做項目過程中,使用到了海康相機,官方只提供了C/C++的SDK,沒有搜尋到一個合適的封裝了的C#庫,故自己動手,簡單的封裝了一下,方便大家也方便自己使用和二次開發 ...
  • 前言 MediatR 是 .NET 下的一個實現消息傳遞的庫,輕量級、簡潔高效,用於實現進程內的消息傳遞機制。它基於中介者設計模式,支持請求/響應、命令、查詢、通知和事件等多種消息傳遞模式。通過泛型支持,MediatR 可以智能地調度不同類型的消息,非常適合用於領域事件處理。 在本文中,將通過一個簡 ...
  • 前言 今天給大家推薦一個超實用的開源項目《.NET 7 + Vue 許可權管理系統 小白快速上手》,DncZeus的願景就是做一個.NET 領域小白也能上手的簡易、通用的後臺許可權管理模板系統基礎框架。 不管你是技術小白還是技術大佬或者是不懂前端Vue 的新手,這個項目可以快速上手讓我們從0到1,搭建自 ...
  • 第1章:WPF概述 本章目標 瞭解Windows圖形演化 瞭解WPF高級API 瞭解解析度無關性概念 瞭解WPF體繫結構 瞭解WPF 4.5 WPF概述 ​ 歡迎使用 Windows Presentation Foundation (WPF) 桌面指南,這是一個與解析度無關的 UI 框架,使用基於矢 ...
  • 在日常開發中,並不是所有的功能都是用戶可見的,還在一些背後默默支持的程式,這些程式通常以服務的形式出現,統稱為輔助角色服務。今天以一個簡單的小例子,簡述基於.NET開發輔助角色服務的相關內容,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 第3章:佈局 本章目標 理解佈局的原則 理解佈局的過程 理解佈局的容器 掌握各類佈局容器的運用 理解 WPF 中的佈局 WPF 佈局原則 ​ WPF 視窗只能包含單個元素。為在WPF 視窗中放置多個元素並創建更貼近實用的用戶男面,需要在視窗上放置一個容器,然後在這個容器中添加其他元素。造成這一限制的 ...
  • 前言 在平時項目開發中,定時任務調度是一項重要的功能,廣泛應用於後臺作業、計劃任務和自動化腳本等模塊。 FreeScheduler 是一款輕量級且功能強大的定時任務調度庫,它支持臨時的延時任務和重覆迴圈任務(可持久化),能夠按秒、每天/每周/每月固定時間或自定義間隔執行(CRON 表達式)。 此外 ...
  • 目錄Blazor 組件基礎路由導航參數組件參數路由參數生命周期事件狀態更改組件事件 Blazor 組件 基礎 新建一個項目命名為 MyComponents ,項目模板的交互類型選 Auto ,其它保持預設選項: 客戶端組件 (Auto/WebAssembly): 最終解決方案裡面會有兩個項目:伺服器 ...
  • 先看一下效果吧: isChecked = false 的時候的效果 isChecked = true 的時候的效果 然後我們來實現一下這個效果吧 第一步:創建一個空的wpf項目; 第二步:在項目裡面添加一個checkbox <Grid> <CheckBox HorizontalAlignment=" ...
  • 在編寫上位機軟體時,需要經常處理命令拼接與其他設備進行通信,通常對不同的命令封裝成不同的方法,擴展稍許麻煩。 本次擬以特性方式實現,以兼顧維護性與擴展性。 思想: 一種命令對應一個類,其類中的各個屬性對應各個命令段,通過特性的方式,實現其在這包數據命令中的位置、大端或小端及其轉換為對應的目標類型; ...