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區分開方便往後使用管理,互不影響
![](http://static.javashuo.com/static/loading.gif)
第三種 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