1 回答

TA貢獻1780條經驗 獲得超1個贊
不確定是否清楚,但是對于數據庫目標,一條日志消息將是數據庫中的一條記錄。同樣在這種情況下,數據庫目標選項也值得檢查。
您的配置不起作用,因為${clientusername}
NLog 中不存在。
我將展示3個例子,希望能讓事情清楚
示例 1:簡單記錄到數據庫目標
記錄器調用:
logger.Info("my?info?message");
配置:
<target name="apiUsageLog" xsi:type="Database" connectionStringName="connStringName">
? ? <commandtext>
? ? ? ? INSERT INTO Table
? ? ? ? (message, machinename)
? ? ? ? VALUES
? ? ? ? (@message, @machinenameParam)
? ? </commandtext>
? ? <parameter name="@messageParam" layout="${message}" /> <!-- this will be "my info message"-->
? ? <parameter name="@machinenameParam" layout="${machinename}" /> <!-- defined in NLog, see https://nlog-project.org/config/?tab=layout-renderers-->
? ? </target>
</targets>
my info message
這將在數據庫中創建一條帶有計算機名稱的日志記錄。
示例 2:使用自定義屬性:
我將在這里使用結構化日志記錄。
記錄器調用:
logger.Info("my?info?message?with?{Property1}",?"value1");
配置:
<target name="apiUsageLog" xsi:type="Database" connectionStringName="connStringName">
? ? <commandtext>
? ? ? ? INSERT INTO Table
? ? ? ? (message, machinename, property1)
? ? ? ? VALUES
? ? ? ? (@message, @machinenameParam, @propertyParam1)
? ? </commandtext>
? ? <parameter name="@messageParam" layout="${message}" /> <!-- this will be "my info message"-->
? ? <parameter name="@machinenameParam" layout="${machinename}" /> <!-- defined in NLog, see https://nlog-project.org/config/?tab=layout-renderers-->
? ? <parameter name="@propertyParam1" layout="${event-properties:Property1}" /> <!-- this will be "value1" -->
? ? </target>
</targets>
這將在數據庫中創建一條日志記錄my info message with "Value1",其中包含計算機名稱和自定義屬性“value1”。
示例3:自定義屬性,不全部在消息中
這結合了結構化日志記錄和WithProperty. 為此,您至少需要 NLog 4.6.3。
記錄器調用:
logger.WithProperty("Property2", "value2")
? ? ? .Info("my info message {Property1}", "value1");
配置:
<target name="apiUsageLog" xsi:type="Database" connectionStringName="connStringName">
? ? <commandtext>
? ? ? ? INSERT INTO Table
? ? ? ? (message, machinename, property1, property2)
? ? ? ? VALUES
? ? ? ? (@message, @machinenameParam, @propertyParam2)
? ? </commandtext>
? ? <parameter name="@messageParam" layout="${message}" /> <!-- this will be: my info message with "value1"-->
? ? <parameter name="@machinenameParam" layout="${machinename}" /> <!-- defined in NLog, see https://nlog-project.org/config/?tab=layout-renderers-->
? ? <parameter name="@propertyParam1" layout="${event-properties:Property1}" /> <!-- this will be "value1" -->
? ? <parameter name="@propertyParam2" layout="${event-properties:Property2}" /> <!-- this will be "value2" -->
? ? </target>
</targets>
這將在數據庫中創建一條日志記錄my info message with "Value1",其中包含計算機名稱以及自定義屬性“value1”和“value2”
請注意,現在消息中包含“value1”,而“value2”則不在消息中。
- 1 回答
- 0 關注
- 164 瀏覽
添加回答
舉報