C#第三方日誌庫Nlog
C#第三方庫Nlog
Kagula
2012-03-31
內容簡介
本文記錄C#的NLog庫(日誌庫)的常用方式。所有程式碼在WinXPSP3+VS2010SP1環境中測試通過。
使用的第三方庫是Sentinel 0.9.2.0,NLog-v2.0.0.2000。
如果是在Silverlight專案中使用NLog請參考資料[4]。
正文
第一次使用
在參考資料[2]中找到download下載Nlog安裝包,在系統中安裝。
新建C#的Win32Console專案,滑鼠右鍵單擊專案名稱,新增新專案[Visual C# Items]->[CSharp]->[Empty Nlog configuration file]
下面在Program.cs中填入預設程式碼
using System; using System.Collections.Generic; using System.Linq; using System.Text; using NLog; namespace testNLog { class Program { private static Logger logger = LogManager.GetCurrentClassLogger(); public static void MyMethod1() { int k = 42; int l = 100; logger.Trace("Sample trace message, k={0}, l={1}", k, l); logger.Debug("Sample debug message, k={0}, l={1}", k, l); logger.Info("Sample informational message, k={0}, l={1}", k, l); logger.Warn("Sample warning message, k={0}, l={1}", k, l); logger.Error("Sample error message, k={0}, l={1}", k, l); logger.Fatal("Sample fatal error message, k={0}, l={1}", k, l); logger.Log(LogLevel.Info, "Sample fatal error message, k={0}, l={1}", k, l); } static void Main(string[] args) { logger.Info("---------------------------------------"); logger.Trace("Sample trace message"); logger.Debug("Sample debug message"); logger.Info("Sample informational message"); logger.Warn("Sample warning message"); logger.Error("Sample error message"); logger.Fatal("Sample fatal error message"); // alternatively you can call the Log() method // and pass log level as the parameter. logger.Log(LogLevel.Info, "Sample fatal error message"); MyMethod1(); } } }
下面在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"> <!-- make sure to set 'Copy To Output Directory' option for this file --> <!-- go to http://nlog-project.org/wiki/Configuration_file for more information --> <targets> <target name="asyncFile" xsi:type="AsyncWrapper"> <target name="logfile" xsi:type="File" fileName="file.txt" /> </target> <target name="console" xsi:type="ColoredConsole" layout="[${date:format=yyyy-MM-dd HH\:mm\:ss}][${level}] ${message} ${exception}"/> </targets> <rules> <logger name="*" minlevel="Info" writeTo="logfile" /> <logger name="*" minlevel="Trace" writeTo="console" /> </rules> </nlog>
上面這個例子演示了,日誌資訊如何輸出到控制檯和檔案中。檔案中的Target標籤對有個巢狀,最外層是個“AsyncWrapper”型別的Target標籤對,使資訊以非同步方式輸出到日誌檔案。
新增的NLog.config檔案必須放在專案對應的DEBUG目錄或RELEASE目錄中,即必須放在和可執行檔案相同的路徑中。
Logger標籤對,控制輸出範圍與水平
name屬性:
指定哪些程式碼段要輸出資訊,例如:“<logger name="SomeNamespace.Component.*" …”,只輸出SomeNamespace.Component域裡面列印的資訊。
minLevel屬性:
指定輸出等級,Logging 水平分為以下等級“Trace<<Debug<<Info<<Warn<<Error<<Fatal ”,如果我們選擇Info值,則Trace和Debug等級的資訊不會被輸出。
writeTo屬性:
指定使用那個“Target標籤對”來輸出資訊
Final屬性:
這個屬性若設定為true,則被當前Logger標籤對輸出的訊息型別,不再被下一個Logger標籤對處理。例如:
<rules>
<logger name="SomeNamespace.Component.*"minlevel="Trace" writeTo="logfile" final="true"/>
<logger name="*" minlevel="Info"writeTo="logfile2" />
</rules>
Target標籤對,輸出格式,輸出到哪裡
Name屬性:
target標籤對的名稱
Type屬性:
target的型別,比如target=”File”。還有“Database”,“Mail”,“Network”等型別。
Silverlight使用檔案輸出,需將專案設定為Out of browser模式
fileName屬性:
若target型別為File,則可以指定輸出檔名。
例:
fileName=”file.txt”,
fileName="${basedir}/App_Data/log.txt",
fileName="${basedir}/log.txt",
fileName ="${specialfolder:MyDocuments}/log.${shortdate}.txt"
fileName="${logger}.txt"
fileName="${shortdate}.txt"
fileName="${windows-identity:domain=false}.txt
fileName="${shortdate}/${windows-identity:domain=false}.txt"
如果是Silverlight專案可能不能指定輸出檔案到App_Data目錄下。
Layout屬性:
格式化輸出日誌資訊。例:
layout="${date:format=HH\:mm\:ss}|${level}|${stacktrace}|${message}"
layout="[${date:format=yyyy-MM-ddHH\:mm\:ss}][${level}] ${message} ${exception}"
layout="${longdate}${callsite} ${level} ${message}"
address屬性:
指定日誌資訊輸出到哪個網路伺服器,例:
<targetname="n1" xsi:type="Network"address="tcp://localhost:4001"/>
傳送除錯資訊到網路伺服器
參考資料[3]可以實現。但是需要注意以下問題:
[1]建議下載這個軟體的zip版本,解壓后里面有Sentinel.exe檔案,可以用下面的命令列啟動Sentinel,免得每次啟動,都要輸入一遍配置資訊。
“sentinel nlog udp 9999”
[2]如果改成TCP(參考資料[3]用的是UDP)方式,則sentinel收不到日誌資訊,不知是什麼原因。
參考資料
[1]《Nlog Tutorial》
[2]《Nlog 官網》
[3]《Sentinel官網》
[4]《使用NLog為Silverlight增加日誌記錄功能》
相關推薦
C#第三方日誌庫Nlog
C#第三方庫Nlog Kagula 2012-03-31 內容簡介 本文記錄C#的NLog庫(日誌庫)的常用方式。所有程式碼在WinXPSP3+VS2010SP1環境中測試通過。 使用的第三方庫是Sentinel 0.9.2.0,NLog-v2.0.0.20
[置頂] C++開源日誌庫--Glog的使用
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
C++開源日誌庫選擇
每個系統都需要日誌記錄,通過日誌方便排錯除錯,管理執行時的異常。 而C++開源的日誌庫,待選的有 glog、log4cplus、log4cpp、log4cxx 目前準備使用glog,使用方便,效能也不錯,待進一步試驗,如果有不能滿足的功能就轉用 log4cplus,功能很
C++開源日誌庫Glog的使用(VS2010)
如需轉載請標明出處:http://blog.csdn.net/itas109 QQ技術交流群:129518033 平臺:windows 開發工具:VS2010 1、下載Glog 下載完成之後,用VS2010進行編譯,預設是vs2008讓其自動轉換,如圖所示。 編譯
C++:日誌庫log4cplus 2.0的使用說明
以前在做java開發時一直都在用log4j,它配置靈活,功能強大。如果C++中也存在類似配置的日誌庫,則可以省去不少學習的時間。在C++中的確有這樣的一些庫,本文就拿其中用的最多的log4cplus來講講如何使用它。 可以從以上兩個地址中下載最新的檔案,本文使用的最新版
第三方日誌庫logrus使用
第三方日誌庫logrus使用 日誌是程式中必不可少的一個環節,由於Go語言內建的日誌庫功能比較簡潔,我們在實際開發中通常會選擇使用第三方的日誌庫來進行開發。本文介紹了logrus這個日誌庫的基本使用。 logrus介紹 Logrus是Go(golang)的結構化logger,與標準庫logger完全API相容
c#的日誌插件NLog基本使用
nag async info 插件 sta pack hmm erro 完整 本文介紹c#的日誌插件NLog 安裝插件 創建logger 日誌級別 書寫日誌信息 配置 包裝器 布局 安裝插件 直接下載插件包 Install-Package NLog.Config 創建lo
不用第三方解碼庫取得圖片寬高 附完整C++算法實現代碼
== 實現 for break 特定 out printf chunk char* 在特定的應用場景下,有時候我們只是想獲取圖片的寬高, 但不想通過解碼圖片才取得這個信息。 預先知道圖片的寬高信息,進而提速圖片加載,預處理等相關操作以提升體驗。 在stackoverflow
c++ 高性能日誌庫(muduo_AsyncLogging)
c++ reset IT 實現思路 for ava void 協調 前端 實現一個高效的網絡日誌庫要解決那些問題? 首先明確一下問題的模型,這是一個典型的多生產者 單消費者問題,對於前端的日誌庫使用者來說,應該做到非阻塞添加,作為後端的文件寫入,應該註意磁盤IO的瓶頸。
C# log4net 日誌寫入到數據庫
寫入 enc gpu 效果 ring 級別 expand 反射 epo 效果圖: 1:第一步創建SQL表結構 CREATE TABLE [dbo].[LogDetails] ( [LogID] int NOT NULL IDENTITY(1,1) , [
python2.7安裝第三方擴充套件庫報Microsoft Visual C++9.0 required
環境: 作業系統:Windows 7 64位 語言:Python 2.7.9 Twisted webrtcvad 等第三方擴充套件庫 安裝,執行如下命令: pip install Twisted/...
Masm(611) 呼叫 第三方c語言函式(彙編呼叫第三方c語言函式庫)
一開始的程式碼: void print(){ printf("hello hairi"); } lib1的程式碼 include Lib1.lib data segment ;定義資料段 infon db 0dh,0ah,'Please input a year
C++第三方庫
Eigen: C++開源矩陣計算工具 https://blog.csdn.net/houjixin/article/details/8477522 http://eigen.tuxfamily.org/dox/group__QuickRefPage.html &
JIN學習一、Android使用已有C/C++程式碼、第三方SO庫的方法
1.配置好NDk編譯環境(這個Google一下,:)) 2.將已有C/C++程式碼,編譯成SO檔案 3.Eclipse中新建Android工程,建立一個jni目錄。如下所示 4.在jni目錄建立C/C++檔案,裡面呼叫步驟2函式,或者第三方SO的函式 5.建立Androi
Android使用已有C/C++程式碼、第三方SO庫的方法(JIN學習)
1.配置好NDk編譯環境(這個Google一下,:)) 2.將已有C/C++程式碼,編譯成SO檔案 3.Eclipse中新建Android工程,建立一個jni目錄。如下所示 4.在jni目錄建立C/C++檔案,裡面呼叫步驟2函式,或者第三方SO的函式 5.建
在Linux上的使用開源C++日誌庫 ---log4cplus
1.簡 介 log4cplus是C++編寫的開源的日誌系統,前身是java編寫的log4j系統.受Apache Software License保護。作者是Tad E. Smith。 log4cplus具有執行緒安全、靈活、以及多粒度控制的特點,通過將資訊劃分優先順序使其可以面向程式除錯、
C# 通用日誌 log4net 公共類庫 (可擴充套件)
之前如果搭建一個新專案,想要使用日誌就必須複製一套log4net的web.config的配置,複製都還好,關鍵當你複製完,發現並不能用,而且還不知道哪裡錯了。。。 最終忍無可忍,這個通用日誌類庫就誕生了。都說程式設計師是最懶惰的人,這句話是一點沒錯!!! 好了
C++第三方常用網路庫
(1)ACE龐大、複雜,適合大型專案。開源、免費,不依賴第三方庫,支援跨平臺。(2)AsioAsio基於Boost開發的非同步IO庫,封裝了Socket,簡化基於socket程式的開發。開源、免費,支援跨平臺。(3)POCOPOCO C++ Libraries 提供一套 C+
CMake 連結第三方的庫 和 新增C++11的支援
這裡的例子, 是連結libev , 如下: 我的CMake 版本是3.10 # CMake 最低版本號要求 cmake_minimum_required (VERSION 2.8) # 專案資訊 project (server) # 查詢當前目錄下的所有原始檔 # 並將
C++日誌庫log4cplus:SocketAppender記錄日誌到log Server
1.問題 C++程式在後臺執行時,可通過log4cplus記錄日誌。當C++程式執行在遠端伺服器上時,我們就需要遠端登陸到該伺服器才能檢視日誌。進一步,如果該C++程式一個並行程式或者分散式程式,為了檢視程式的執行狀態,我們就需要登陸到N臺伺服器上,tail -f xx.