我在 .net 应用程序(实际版本 4.7.2)中遇到 log4net 的奇怪问题。 我已经用一个扩展 AdoNetAppender 的类激活了多个记录器(我只覆盖了如何获取连接字符串),配置如下:
<appender name="MyTraceAppender" type="mytype, myassembly">
<bufferSize value="1" />
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<connectionStringName value="RootContext"/>
<commandText value="INSERT INTO table (columns) VALUES (values)" />
<parameter>
<parameterName value="@paramname" />
<dbType value="Int32" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%property{paramname}" />
</layout>
</parameter>
<parameter>
.....
</appender>
然后,从代码中我以这种模式调用记录器
ThreadContext.Properties["paramname"] = paramvalue;
....
Logger.Info("");
我注意到记录器跟踪所有请求,但另一个似乎“丢失”了数据库中的一些日志 第一个记录器只跟踪一些参数,而第二个记录器跟踪更大的数据(例如正文请求)
数据库连接用于 Azure SQL 数据库。似乎记录器没有错误,但可能与某些并发问题有关吗?如果是,我该如何处理?
如果我增加缓冲区大小,内存管理会不会有问题?