gpt4 book ai didi

.net - 使用 common.logging 动态设置 log4net 属性

转载 作者:行者123 更新时间:2023-12-02 03:23:11 30 4
gpt4 key购买 nike

有谁知道Common.Logging(针对.Net)中是否有等效项来设置log4net工厂适配器的属性?我在使用 log4net 时取得了巨大的成功:

<appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="logs\Log_%property{BrokerID}.txt"/>
<appendToFile value="false"/>
<rollingStyle value="Size"/>
<maxSizeRollBackups value="-1"/>
<maximumFileSize value="50GB"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %-5level %logger - %message%newline"/>
</layout>
</appender>

并设置属性,例如:log4net.GlobalContext.Properties["BrokerID"] = 10

当使用 common.logging 动态连接 log4net 时,我最终得到的文件如下所示:Log_(null).txt

最佳答案

查看我的answer对于上一个问题。也许会有帮助,也许不会。

总结一下:

  1. Common.Logging (NET) 在其 website 上表示计划在“下一个”版本中支持“上下文”。

  2. website上不清楚计划下一个版本(当前版本是 2.0)时。网站上写着“六月”。当前版本 (2.0) 是 2009 年 4 月。该网站上次更新是在 2009 年 5 月(也许是为了宣布 2.0)? “六月”是什么意思? 2009 年 6 月? 2010 年 6 月?两者都来了又走了。

  3. 鉴于 Common.Logging 中尚不支持“上下文”,请查看 CaSTLe 项目中的“上下文”实现(log4net 实现为 here )。将该实现移植到 Common.Logging 并不困难。一个风险是最终来自 Common.Logging 的上下文实现可能与 CaSTLe 实现不相似。

  4. CaSTLe“上下文”支持是在 ILog/ILogger 接口(interface)上实现的。因此,不要像这样设置上下文:

通过直接 log4net 访问上下文:

log4net.GlobalContext.Properties["BrokerID"] = 10;

通过日志抽象访问上下文:

ILog logger = Common.Logging.LogManager.GetCurrentClassLogger();
logger.GlobalContext.Properties["BrokerID"] = 10;

从拥有记录器时设置上下文的角度来看,这似乎相当不错。如果您只想在没有记录器的情况下设置上下文,可能不太好。如果 Common.Logging.LogManager 知道什么抽象是“事件的”(它应该知道,因为抽象可以通过 LogManager.Adapter 属性设置/获取)。因此,也许“上下文”可以从 ILog 接口(interface)以及 LogManager.Adapter 接口(interface)获得。

关于.net - 使用 common.logging 动态设置 log4net 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2118626/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com