站長留言

  • ✅ 本站維護及更新歷史紀錄,詳情請參考公告
  • ✅ 有任何意見、想法,歡迎留言給Spicy知道喔
  • ✅ 固定於每周一至周五更新Blogger文章,周末不定期
程式資料庫C#MSSQL

【NLog】比較4.0 vs 5.0用法,將日誌寫進檔案或資料庫DB

thumbnail

目標Common

紀錄NLog4.0與5.0的寫法不同之處
此教學包含將日誌寫進檔案及資料庫兩種寫法

Spicy環境,供參
  • Windows 10 or 11
  • .NET Framework 3.5 or 4.5
  • Visual Studio 2019 or 2022
  • MSSQL (Microsoft SQL Server)

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]

參考資料 Reference

沒有留言:

張貼留言

本網站建議使用電腦或平板瀏覽