Nlog的版本在4.x時還可以不用裝nlog.database這個nuget套件就可以將log寫到資料庫

但在5.x之後就要裝nlog.database才可以將log寫到資料庫

在asp.net core 3.1時裝4.x,然後nlog.config設定資料庫即可正常寫入

在asp.net  6時裝5.x,nlog.config設定資料庫及裝nlog.database這個nuget套件後才可以正常寫入

以上就是nlog二大版本的差異,後續的設定基本是相同的了

在nlog.config設定寫入目標

<targets>

    <target name="database" xsi:type="Database"        connectionString="${var:connstr}"              dbProvider="System.Data.SqlClient">
         <commandText>
             INSERT INTO NlogTable (Application, Level, Message, Logger, Callsite)
             VALUES (@Application, @Level, @Message, @Logger, @Callsite)
         </commandText>
         <parameter name="@Application" layout="Test" />
         <parameter name="@Level" layout="${level}" />
         <parameter name="@Message" layout="${message}" />
         <parameter name="@Logger" layout="${logger}" />
         <parameter name="@Callsite" layout="${callsite}" />

    </target>
</targets>

<!--[設定] 紀錄規則,我這邊只記錄error的問題, 可以再另外自行調整-->
<rules> 
     <logger name="*" levels="Error" writeTo="database" />

</rules>

連線字串的部份在網路上的文章大部份都是寫在nlog.config

在startup.cs裡的加入這一段

public class Startup

{

var loggerConfig = NLogBuilder.ConfigureNLog("nlog.config");
LogManager.Configuration = loggerConfig.Configuration;
LogManager.Configuration.Variables["connstr"] =”這邊是你的連線字串”;
loggerConfig.ReconfigExistingLoggers();

}

這樣就可以在網站初始化的時候,將連線字串變數動態換成真實的連線字串,而不是把連線字串寫死在nlog.config裡

arrow
arrow
    全站熱搜

    丫德 發表在 痞客邦 留言(0) 人氣()