溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

C# NLog體驗(yàn)

發(fā)布時(shí)間:2020-06-24 21:56:02 來(lái)源:網(wǎng)絡(luò) 閱讀:1261 作者:Aonaufly 欄目:編程語(yǔ)言

本人直接在Nuget中獲得Nlog日志類(lèi)庫(kù)支持,再次整下Nuget知識(shí)(需要在聯(lián)網(wǎng)的前景下進(jìn)行)

①:在項(xiàng)目上右擊-》管理NuGet程序包(如下圖所示)

C# NLog體驗(yàn)

②:出現(xiàn)管理器面板單擊左側(cè)“聯(lián)網(wǎng)”也簽 -》在右側(cè)的搜索欄中輸入“NLog”回車(chē)-》在中間選擇“NLog”欄目點(diǎn)擊安裝(如下圖所示)

C# NLog體驗(yàn)

等待下載(所以說(shuō)需要聯(lián)網(wǎng))

C# NLog體驗(yàn)

C# NLog體驗(yàn)

在這有個(gè)小插曲 , 因?yàn)槲业目刂婆_(tái)程序沒(méi)有配置文件(app.config),一般新建的控制臺(tái)程序都有的。不說(shuō)了 , 動(dòng)手添加,但是必須注意:只能添加一個(gè)配置文件(操作如下圖)

C# NLog體驗(yàn)

個(gè)人覺(jué)得比較難找 , 建議使用搜索

C# NLog體驗(yàn)

附上整個(gè)App.config的配置

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/>
  </configSections>
  <nlog autoReload="true" internalLogLevel="Trace" internalLogFile="logs/internalLog.txt">
    <targets>
      <target name="T1" type="File" fileName="${basedir}/logs/${shortdate}.log"
              layout="${longdate} ${callsite} ${level}: 
              ${message} ${event-context:item=exception} ${stacktrace} ${event-context:item=stacktrace}"/>
      <target name="T2" type="Console" layout="${date:format=yyyyMMddHHmmss} ${callsite} ${level} ${message}"/>
    </targets>
    <rules>
      <logger name="file" minlevel="Debug" maxlevel="Off" writeTo="T1"/>
      <logger name="console" minlevel="Trace" maxlevel="Off" writeTo="T2"/>
    </rules>
  </nlog>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
</configuration>

注解:

① , autoReload="true"表示在不重新啟動(dòng)應(yīng)用程序的情況下,修改配置文件,NLog會(huì)自動(dòng)加載應(yīng)用;

internalLogLevel="Trace"internalLogFile="logs/internalLog.txt"這個(gè)設(shè)置可以將NLog內(nèi)部的日志消息寫(xiě)到應(yīng)用程序目錄下的logs文件夾里的internalLog.txt文件中;(這個(gè)配置常用于調(diào)試Nlog的配置是否正確,調(diào)試完成后,最好關(guān)閉以提高性能)
<target>的配置:type="File|Console" 屬性是設(shè)置日志輸出目標(biāo)是"File"(文件)或者"Console"(控制臺(tái));


②,type="File"的時(shí)候要指定fileName屬性, fileName="${basedir}/logs/${shortdate}.log" 設(shè)置日記記錄文件的路徑和名稱(chēng),即應(yīng)用程序下的log目錄里格式為yyyy-MM-DD.log;

layout="${date:format=yyyyMMddHHmmss} ${callsite} ${level} ${message}" 設(shè)置日志輸出格式(可查閱官網(wǎng)說(shuō)明).


③,name="file"表示配置的規(guī)則適用于Logger名稱(chēng)為“file”,如果填*,則表示所有的Logger都運(yùn)用這個(gè)規(guī)則。
minlevel="Debug"maxlevel="Off"用來(lái)配置記錄的級(jí)別為最小是"Debug"最大為"Off"(備注:此處也可以用levels="Debug,Off"來(lái)設(shè)置,說(shuō)明只輸出Debug級(jí)別以及Off級(jí)別的日志,官網(wǎng)此處解說(shuō)有誤:)
writeTo="T1"其中T1,T2分別代表上面設(shè)置的targets名稱(chēng)為T(mén)1以及T2的目標(biāo)輸出,此處表示將分別將日志信息輸出到文件/控制臺(tái)。


有必要說(shuō)一下消息級(jí)別

解壓下載的壓縮包:http://nlog-project.org/ 請(qǐng)從官網(wǎng)下載

解壓后 在src/NLog中有個(gè)LogLevel.cs文件,里面有消息等級(jí)的相關(guān)信息(可以打開(kāi)看看,總共分6級(jí),從低到高)

C# NLog體驗(yàn)


好了,代碼測(cè)試:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NLog;
namespace MyNLog
{
    public class Program
    {
        private static Logger @loggerFile = LogManager.GetLogger("file");
        private static Logger @loggerConsole = LogManager.GetLogger("console");
        static void Main(string[] args)
        {
            loggerFile.Debug("A File test Message = Debug");
            loggerFile.Warn("A File test Message = Warn");
            loggerFile.Trace("A File test Message = Trace");
            loggerConsole.Debug("A Console test Message = Debug");
            Console.Read();
        }
    }
}

解析:

① ,@loggerFile類(lèi)是往文件當(dāng)中寫(xiě)日志的

② ,@loggerConsole類(lèi)是往控制臺(tái)寫(xiě)消息的

C# NLog體驗(yàn)

至于日志在Debug/logs中

C# NLog體驗(yàn)

因?yàn)榕渲脝?wèn)題,參見(jiàn)App.config , 2017-03-09.log中沒(méi)有A File test Message = Trace

C# NLog體驗(yàn)


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI