「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

留言

這個網誌中的熱門文章

使用「Visual Studio 2019」建置 Windows 服務

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

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

使用 Visual Studio 2019 實作「RESTful API」

讓 JavaScript 能在伺服器端執行的環境 「node.js」

好用的資料庫管理工具「SQL Server 資料庫專案」

asp.net 下的 JSON 套件最佳利器「Newtonsoft.Json」

使用「Visual Studio 2019」進行網站負載測試

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