【发布时间】:2020-11-10 21:59:19
【问题描述】:
我已经看到了多个关于如何执行此操作的链接,并且我的版本在技术上可以正常工作。
示例:Example
因此,我在代码中添加了一个新属性 Unit_Name。
for (int i = 0; i < 5; i++)
{
log4net.GlobalContext.Properties["Unit_Name"] = "Bob " + i.ToString();
log.Fatal("This is fatal");
}
在控制台 Appender 的配置文件中
<appender name="console" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %level %logger %property{unit_name} - %message %newline" />
</layout>
</appender>
这很有效,因此我将其添加到了我的 AdoNetAdapter 部分。
<commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[UnitName],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger,@unit_name, @message, @exception)" />
还有一个参数部分
<parameter>
<parameterName value="@unit_name" />
<dbType value="String" />
<size value="200" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%property(Unit_Name)" />
</layout>
</parameter>
现在测试一切仍在工作,但上面的参数应该显示字符串 Bob 1、Bob 2 等。但是在查看数据库表时,我得到以下信息:
{log4net:HostName=GBRCL33199, log4net:Identity=, log4net:UserName=userName, Unit_Name=Bob 0}(Unit_Name)
这一定是配置错误,但我看不到我在哪里或做错了什么。
【问题讨论】:
标签: c# log4net log4net-configuration log4net-appender