「NLog」與「Sql Server」資料庫的完美搭配

一、前言

筆者工作時會將應用程式的資訊透過 NLog 寫入 Db(Sql Server)。為了日後方便記憶,因此文章就這樣誕生了~

二、開發環境

  • 整合開發環境:Visual Studio 2019
  • 語言:C#
  • .net framework:4.6.2

三、Nuget

安裝套件

  • NLog
  • NLog.Config
  • NLog.Schema

圖、套件清單

四、操作步驟

圖、修改 NLog.configtargetlogger 元素

  • 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}");
    }
}

圖、執行後結果

五、相關連結

  1. 使用「NLog」來記錄應用程式的大小事吧

六、參考

  1. NLog Tutorial
  2. NLog Nuget

留言

這個網誌中的熱門文章

「綠界(Ecpay)」金流介接教學

使用「NLog」來記錄應用程式的大小事吧

使用 Visual Studio 2019 實作「RESTful API」

使用「ADO.NET」 進行資料庫的讀取、新增、修改、刪除的操作

使用「LINE Messaging API」發送 line 訊息

「Selenium」前端 UI 自動化測試、爬蟲程式 最佳利器

「Katalon Recorder」簡化測試腳本撰寫的工具

如何傳送訊息至「Teams」的 Channel

在Visual Studio 2019 使用 Subversion 的客服端工具「AnkhSVN2019」