您好,登錄后才能下訂單哦!
本人直接在Nuget中獲得Nlog日志類庫支持,再次整下Nuget知識(需要在聯網的前景下進行)
①:在項目上右擊-》管理NuGet程序包(如下圖所示)
②:出現管理器面板單擊左側“聯網”也簽 -》在右側的搜索欄中輸入“NLog”回車-》在中間選擇“NLog”欄目點擊安裝(如下圖所示)
等待下載(所以說需要聯網)
在這有個小插曲 , 因為我的控制臺程序沒有配置文件(app.config),一般新建的控制臺程序都有的。不說了 , 動手添加,但是必須注意:只能添加一個配置文件(操作如下圖)
個人覺得比較難找 , 建議使用搜索
附上整個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"表示在不重新啟動應用程序的情況下,修改配置文件,NLog會自動加載應用;
internalLogLevel="Trace"internalLogFile="logs/internalLog.txt"這個設置可以將NLog內部的日志消息寫到應用程序目錄下的logs文件夾里的internalLog.txt文件中;(這個配置常用于調試Nlog的配置是否正確,調試完成后,最好關閉以提高性能)
<target>的配置:type="File|Console" 屬性是設置日志輸出目標是"File"(文件)或者"Console"(控制臺);
②,type="File"的時候要指定fileName屬性, fileName="${basedir}/logs/${shortdate}.log" 設置日記記錄文件的路徑和名稱,即應用程序下的log目錄里格式為yyyy-MM-DD.log;
layout="${date:format=yyyyMMddHHmmss} ${callsite} ${level} ${message}" 設置日志輸出格式(可查閱官網說明).
③,name="file"表示配置的規則適用于Logger名稱為“file”,如果填*,則表示所有的Logger都運用這個規則。
minlevel="Debug"maxlevel="Off"用來配置記錄的級別為最小是"Debug"最大為"Off"(備注:此處也可以用levels="Debug,Off"來設置,說明只輸出Debug級別以及Off級別的日志,官網此處解說有誤:)
writeTo="T1"其中T1,T2分別代表上面設置的targets名稱為T1以及T2的目標輸出,此處表示將分別將日志信息輸出到文件/控制臺。
有必要說一下消息級別
解壓下載的壓縮包:http://nlog-project.org/ 請從官網下載
解壓后 在src/NLog中有個LogLevel.cs文件,里面有消息等級的相關信息(可以打開看看,總共分6級,從低到高)
好了,代碼測試:
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類是往文件當中寫日志的
② ,@loggerConsole類是往控制臺寫消息的
至于日志在Debug/logs中
因為配置問題,參見App.config , 2017-03-09.log中沒有A File test Message = Trace
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。