【发布时间】:2017-10-30 15:23:05
【问题描述】:
我有两个不同级别的同一数据库记录器。我想为每个记录器设置不同的 bufferSize。 一种方法是让两个附加程序到同一个数据库,只有 bufferSize 元素不同,但它是复制粘贴。 是否可以扩展已经定义的 appender 并更改它的 bufferSize 属性? 例如:
<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
<bufferSize value="20" />
...other elements
</appender>
<appender name="AdoNetAppenderChild" extends="AdoNetAppender">
<bufferSize value="1" />
</appender>
<logger name="Fatal" additivity="false">
<level value="FATAL"/>
<appender-ref ref="AdoNetAppenderChild" />
</logger>
<logger name="Common" additivity="false">
<level value="INFO"/>
<appender-ref ref="AdoNetAppender" />
</logger>
我要避免的是有两个具有相同元素和属性的附加程序,只有不同的值是 bufferSize
【问题讨论】:
-
“它是复制粘贴” 配置经常是,而且是烦人的冗长和重复。在这种情况下,在配置中加倍可能是你最好的选择- 您真的不想在运行时更改缓冲区大小,唯一的另一种选择是编写代码来复制附加程序(或创建一个新的附加程序等),然后需要对其进行记录、测试等。
-
谢谢。还有一个问题,是否可以为每个 MVC 控制器设置一个静态记录器,并在该记录器中添加一些来自会话的额外信息。具体来说,如果我将 log4net.LogicalThreadContext.["sessionVariable"] 从会话中放入,我可以确定它不会被覆盖还是应该在每个请求上创建新的记录器实例?
-
对于静态记录器,我不会 100% 有信心。 log4net 缓存记录器,因此在每个请求上创建一个新的 on 会更安全。
标签: c# logging log4net log4net-configuration log4net-appender