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 关注
- 90 浏览
添加回答
举报