.Net 如何使用Nlog

NLog是一個簡單靈活的.NET日誌記錄類庫,NLog的API很是相似於log4net,且配置方式很是簡單。經過使用NLog,咱們能夠在任何一種.NET語言中輸出帶有上下文的調試信息,根據項目需求配置署出格式和輸出目標的規則。
NLog使用路由進行配置,但log4net卻使用層次性的appender配置,這樣就讓NLog的配置文件很是容易閱讀,並便於從此維護。
支持多種形式輸出日誌:文本文件 系統日誌 數據庫 控制檯 郵箱 等
一 獲取方式
1獲取該類:
第一種 在nuget控制檯輸入安裝nlog命令: Install-Package NLog.Config
第二種 在nuget程序包管理界面上,搜索安裝Nlog 和Nlog configuration,這樣會自動生成一個config文件,這樣和程序或者web本身的config區分開方便往後使用管理,互不影響

 

 
 

 


第三種 GitHub 上https://github.com/NLog/NLog/     https://github.com/NLog/NLog/releases/
二 配置文件
支持多種配置形式:
1直接在使用應用程序配置文件或者web的配置文件(app.config / web.config)
2能夠設置後綴爲.nlog的配置文件,這個就保存在程序目錄下,若是是web項目裏跟web.config同級目錄(程序名.exe.nlog / web.nlog)
3 NLog.config 這個是比較好的一個形式,也比較推薦使用的,網上絕大部分都是用這個形式的.就在程序目錄下.
4 使用NLog.dll.nlog ,這個和NLog.dll在同一級目錄內
我這裏在app.config裏配置數據庫加密串,NLog.config在安裝時自動生成 ,比其餘的配置簡單
配置targets和rules:
<targets /> - 定義日誌的目標/輸出,下級是<target>
<rules /> - 定義日誌的路由規則,下級是<logger>
三 標籤解讀
<nlog>標籤
autoReload 修改配置文件後是否容許自動加載無須重啓程序
throwExceptions 內部日誌系統拋出異常
internalLogLevel 可選Trace|Debug|Info|Warn|Error|Fatal決定內部日誌的級別 Off 關閉
internalLogFile 把內部的調試和異常信息都寫入指定文件裏
建議throwExceptions的值設爲「false」,這樣因爲日誌引起的問題不至於致使應用程序的崩潰。
<targets>標籤
<target />區域定義了日誌的目標或者說輸出 ,,在這裏能夠按需設置文件名稱和格式,輸出方式。
name:自定義該target的名字,可供rule規則裏使用
type: 定義類型,官方提供的可選類型有:
Chainsaw|ColoredConsole |Console |Database|Debug|Debugger|EventLog|File|LogReceiverService|Mail|Memory|MethodCall|Network |NLogViewer|Null |OutputDebugString|PerfCounter|Trace|WebService
不過經常使用的仍是 File \Database \Colored Console\ Mail
layouts 用來規定佈局樣式,語法「${屬性}」,能夠把上下文信息插入到日誌中,官方提供的能夠用的屬性見文末附錄

<rules>標籤

各類規則配置在logger裏
name - 記錄者的名字
minlevel - 最低級別
maxlevel - 最高級別
level - 單一日誌級別
levels - 一系列日誌級別,由逗號分隔。
writeTo - 規則匹配時日誌應該被寫入的一系列目標,由逗號分隔。
<variable>標籤
變量定義
<variable name="variable1" value="${basedir}/logs"/> 
<targets> 
<target name="File" xsi:type="File" fileName="${variable1}/${shortdate}.txt"/> 
</targets>
四 調用方法
1 添加引用 using NLog;
2實例化 private Logger logger = LogManager.GetCurrentClassLogger();
3調用:
  logger.Trace("Trace Message");
        logger.Debug("Debug Message");
        logger.Info("Info Message");
        logger.Error("Error Message");
        logger.Fatal("Fatal Message");

五 效果舉例
1 配置輸出到文件:
<?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"
xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
autoReload="true"
throwExceptions="false"
internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log">
<variable name="variable1" value="${newline}date:    ${date}${newline}level:    ${level}${newline}logger:    ${logger}${newline}machinename:    ${machinename}
${newline}message:    ${message}${newline}appdomain:    ${appdomain}${newline}assembly-version:    ${assembly-version}${newline}basedir:    ${basedir}
${newline}callsite:    ${callsite}${newline}callsite-linenumber:    ${callsite-linenumber}${newline}counter:    ${counter}${newline}nlogdir:    ${nlogdir}
${newline}processid:    ${processid}${newline}processname:    ${processname}${newline}specialfolder:    ${specialfolder}
${newline}stacktrace: ${stacktrace}${newline}-----------------------------------------------------------" />
<targets>
<target name="log_file" xsi:type="File" fileName="${basedir}/LogInformation/${level}_${shortdate}.txt" layout="${variable1}" />
</targets>
<rules>
<logger name="*" writeTo="log_file" />
</rules>
</nlog>
效果:

 

 

 



 附錄:layouts 屬性

${activityid}    將其置入日誌System.Diagnostics trace 
${all-event-properties}    事件日誌上下文
${appdomain}    當前應用程序域
${assembly-version}    應用程序
${basedir}    應用程序域的基本目錄。
${callsite}    (類名稱、方法名稱和相關信息的源信息)。
${callsite-linenumber}    調用類的
${counter}    數值
${date}    當前日期和時間。
${document-uri}    用於Silverlight應用。
${environment}    環境變量
${event-properties}     
${exception}    exception信息
${file-contents}    顯示指定文件的內容
${gc}    垃圾收集器
${gdc}    診斷上下文
${guid}    GUID
${identity}    線程標識信息
${install-context}    安裝參數
${level}    級別。
${literal}     
${log4jxmlevent}    XML事件描述
${logger}    記錄器的名字
${longdate}    日期和時間的格式分類yyyy-MM-dd HH:mm:ss.ffff。
${machinename}    名稱
${mdc}     映射診斷
${mdlc}    異步映射診斷上下文
${message}    消息
${ndc}    線程結構
${ndlc}    異步線程
${newline}    文字換行
${nlogdir}    nlog.dll目錄。
${performancecounter}    述性能計數器。
${processid}    當前進程標識符
${processinfo}    運行信息
${processname}    當前進程的名稱。
${processtime}    該時間過程當中格式HH:MM:ss.mmm。
${qpc}    高精度定時器,基於返回的值從queryperformancecounter(任選地)轉換爲秒。
${registry}    從註冊表中的值。
${sequenceid}    ID
${shortdate}    短期 格式YYYY-MM-DD。
${sl-appinfo}    Silverlight應用。
${specialfolder}    文件夾路徑
${stacktrace} -    堆棧跟蹤渲染器。
${tempdir}    臨時目錄中。
${threadid}    當前線程的標識符。
${threadname}    當前線程。
${ticks}    當前日期和時間。
${time}    24小時格式HH:MM:ss.mmm。
${var}    {$var}-提供新的變量(4.1)
${windows-identity}    indows線程標識信息(用戶名)
官方參考:
https://github.com/nlog/NLog/wiki/Layout%20Renderers
https://github.com/nlog/NLog/wiki/Targets
https://github.com/NLog/NLog/releases/
http://nlog-project.org/
————————————————
版權聲明:本文爲CSDN博主「一木一百」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連接及本聲明。
原文連接:https://blog.csdn.net/u013667895/article/details/79016059
相關文章
相關標籤/搜索