「NLog」與「Sql Server」資料庫的完美搭配
一、前言
筆者工作時會將應用程式的資訊透過 NLog 寫入 Db(Sql Server)。為了日後方便記憶,因此文章就這樣誕生了~
二、開發環境
- 整合開發環境:Visual Studio 2019
- 語言:C#
- .net framework:4.6.2
三、Nuget
安裝套件
- NLog
- NLog.Config
- NLog.Schema
圖、套件清單
四、操作步驟
圖、修改 NLog.config 的 target、logger 元素
- NLog.config 設定
<targets>
<target name="database" xsi:type="Database">
<connectionStringName>DefaultConnection</connectionStringName>
<!--<connectionString>Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=XXX;Integrated Security=True</connectionString>-->
<commandText>
INSERT INTO [dbo].[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:tostring}" />
</target>
</targets>
<rules>
<logger name="*" minlevel="Debug" writeTo="database" />
</rules>
圖、使用 nlog
原始碼 c#
public void LogDbTest()
{
try
{
throw new Exception("Test");
}
catch (Exception e)
{
var log = LogManager.GetCurrentClassLogger();
log.Error(e, $"Error : {e.Message}");
}
}
圖、執行後結果
留言
張貼留言