thumbnail |
目標Common
紀錄NLog4.0與5.0的寫法不同之處
此教學包含將日誌寫進檔案及資料庫兩種寫法
Spicy環境,供參
NLog 5.0
Database 資料庫
利用NuGet安裝library
- NLog
- NLog.Database
安裝NLog |
自行新增NLog.config
注意
- connectionStringName,例如:Sql
- Table名稱,例如:TEST_LOG
- 其餘欄位則是看自己需要紀錄什麼資訊,Table DDL請參考補充說明 ⚓
<?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"> <targets> <target name="database" xsi:type="Database" connectionStringName="Sql"> <commandText> insert into TEST_LOG ( MachineName, Logged, Level, Message, Logger, Callsite, Exception ) values ( @MachineName, @Logged, @Level, @Message, @Logger, @Callsite, @Exception ); </commandText> <parameter name="@MachineName" layout="${machinename}" /> <parameter name="@Logged" layout="${date}" /> <parameter name="@Level" layout="${level}" /> <parameter name="@Message" layout="${message}" /> <parameter name="@Logger" layout="${logger}" /> <parameter name="@Callsite" layout="${callsite}" /> <parameter name="@Exception" layout="${exception:format=tostring}" /> </target> </targets> <rules> <logger name="*" minlevel="Info" writeTo="database" /> </rules> </nlog>
ConnectionString匹配,記得於專案設定檔添加對應的連線字串,名稱要一樣
常見於App.config
<connectionStrings> <add name="Sql" connectionString="Data Source=localhost;Initial Catalog=TEST;User ID=sa;Password=Password;" /> </connectionStrings>
NLog write to DB |
File 檔案
利用NuGet安裝library
- NLog (就只需要安裝這個)
自行新增NLog.config
注意,可自行決定
- 記錄的Log等級
- 儲存的Log格式
- 如何拆分Log
<?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"> <targets> <target name="LogFile" xsi:type="File" fileName="${basedir}/logs/debug_${shortdate}.log" layout="${longdate} ${uppercase:${level}} ${message}" /> <target name="FatalFile" xsi:type="File" fileName="${basedir}/logs/fatal_${shortdate}.log" layout="${longdate} ${uppercase:${level}} ${message} ${exception:format=tostring}" /> </targets> <rules> <logger name="*" levels="Trace,Debug,Info,Warn" writeTo="LogFile" /> <logger name="*" levels="Error,Fatal" writeTo="FatalFile" /> </rules> </nlog>
日誌檔案 |
NLog write to File |
NLog 4.0
基本上NLog.config內容都是一樣的
不同點1- library
舊版不論是將資料寫進資料庫或檔案
利用NuGet安裝library,皆需要
- NLog
- NLog.Config
- NLog.Schema
不同點2- 檔案
舊版專案目錄中會多一個檔案 NLog.xsd
補充說明
TEST_LOG其Table DDL如下,供參
CREATE TABLE [dbo].[FMCS_UPW_LOG]( [id] [int] IDENTITY(1,1) NOT NULL, [MachineName] [nvarchar](200) NULL, [Logged] [datetime] NOT NULL, [Level] [varchar](5) NOT NULL, [Message] [nvarchar](max) NOT NULL, [Logger] [nvarchar](300) NULL, [Callsite] [nvarchar](300) NULL, [Exception] [nvarchar](max) NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
沒有留言:
張貼留言