「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

留言

這個網誌中的熱門文章

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

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

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

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

使用「Visual Studio 2019」建置一個有 Mvc 和 Web Api 架構的網站

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

使用 Visual Studio 2019 實作「RESTful API」

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

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

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