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

圖、執行後結果

五、相關連結

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

六、參考

  1. NLog Tutorial
  2. NLog Nuget

留言

這個網誌中的熱門文章

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

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

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

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

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

「Windows 認證管理員」修改 Bonobo Git Server 的 Git 帳號、密碼

使用「Google API Console」取得 OAuth 2.0 client credentials

快速的套件管理工具「Yarn」

「軟體三層式架構」介紹與實作

「Chrome Headless」隱藏瀏覽器的介面,讓爬蟲程式偷偷的執行