在 Log4Net XML 配置中,优先级与级别相同吗?

2024-04-12

我继承了一些在其 xml 配置中使用根下的优先级元素的代码。这就像下面的例子一样http://serialized.com/log4net-for-noobs/ http://iserialized.com/log4net-for-noobs/这表明:

<root>
 <priority value="ALL" />
 <appender-ref ref="LogFileAppender" />
 <appender-ref ref="ConsoleAppender"/>
</root>

但是,log4net 配置示例位于http://logging.apache.org/log4net/release/manual/configuration.html http://logging.apache.org/log4net/release/manual/configuration.html始终使用 level 元素显示它:

<root>
 <level value="DEBUG" />
 <appender-ref ref="A1" />
</root>

在这种类型的配置中是

<priority>

<level>

?

有人可以指出我在文档中对此进行解释的地方吗?


没有Priority财产在Loggerlog4net 中的类。唯一的实例是Priority我可以找到在SmtpAppender。所以我进入了代码!

In the ParseChildrenOfLoggerElement的方法XmlHierarchyConfigurator你会发现下面的代码:

if (xmlElement.LocalName == "level" || xmlElement.LocalName == "priority")
{
    this.ParseLevel(xmlElement, log, isRoot);
}

啊!两个值都解析为相同的属性(ParseLevel方法实际上并没有做太多事情,除了分配、记录和管理“继承”值(这是一个可能的级别),所以你已经有了它;“级别”和“优先级”对您的配置具有完全相同的效果。我猜这样做是为了保持与该库的先前版本的某种向后兼容性,这实际上是由这篇关于 log4j 的文章 http://en.wikipedia.org/wiki/Log4j#Configuration_of_log4j_1.2:

在 log4j 的早期版本中,这些被称为类别和优先级, 但现在它们分别称为记录器和级别。

事实上,如果我们搜索“类别”,就会有一个Configure方法中的XmlHierarchyConfigurator其中包含以下代码:

// ...
XmlElement xmlElement = (XmlElement)xmlNode;
if (xmlElement.LocalName == "logger")
{
    this.ParseLogger(xmlElement);
}
else
{
    if (xmlElement.LocalName == "category")
    {
        this.ParseLogger(xmlElement);
    }
    else
    {
        if (xmlElement.LocalName == "root")
        {
            this.ParseRoot(xmlElement);
        }
    // ...

就是这样:级别和优先级是可以互换的,记录器和类别也是如此。

有趣的花絮:最后一个属性获胜,并且记录器上可以拥有的属性数量没有限制,因此这是有效的并将级别设置为 DEBUG

<root>
 <priority value="ALL" />
 <priority value="ERROR" />
 <level value="DEBUG" />
</root>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Log4Net XML 配置中,优先级与级别相同吗? 的相关文章

  • 解析没有标记名的 xml

    我有一个 xml 文件
  • Inno Setup:使用缩进保存 XML 文档

    我正在尝试在 Inno Setup 中向 XML 文件添加一个新节点 节点添加正确 但下一个标记之前的换行符被删除或未添加换行符 这是我的添加节点代码 NewNode XMLDoc createElement Test XMLDoc set
  • 将属性值指定为 CDATA

    可以将 XML 属性值指定为 CDATA 吗 如果是的话 相同的模式是什么 如果不是 为什么 XML 中没有解决这个限制 不 你不能这样做 在什么构成属性和什么构成子元素之间存在非常细的界限 并且存在很大的争论 看here https st
  • 对象 xml 反序列化问题?

    我的对象具有父子关系 每个子对象都有一个Parent指向其容器的属性 当这个对象在应用程序中创建时 它就被设置了 因此没有问题 此 Parent 属性标记有 XmlIgnore 属性 因为它需要设置为其运行时父实例 那么 在对象反序列化后初
  • log4j2 SMTP Appender:如何包含另一个级别的先前消息?

    我正在使用 log4j2 beta9 并且有以下配置 其中一部分
  • 为什么 getElementsByTagName 会出现“无效谓词”错误?

    我有以下 XML
  • Python Cherrypy 访问日志轮转

    如果我希望 Cherrypy 的访问日志仅达到固定大小 我将如何使用轮换日志文件 我已经尝试过了http www cherrypy org wiki Logging http www cherrypy org wiki Logging 这似
  • 大型 XML 的 XML 节点到字符串转换

    到目前为止我一直在使用DOM源在我的 Android 应用程序中将 XML 文件转换为字符串 这是我的代码 public String convertElementToString Node element throws Transform
  • 如何在 iOS 中将 NSData 变量转换为 NSInteger 变量

    我有以下返回的 api 方法NSData 我在另一个视图控制器中调用了这个方法 如何转换NSData to NS整数 NSData getBusXMLAtStop NSString stopnumber NSMutableURLReques
  • Android:非键盘输入法

    我正在尝试为 Android 创建一个不是传统键盘 对应于不同字母的按键行 的 IME 并且我无法找到有关如何执行此操作的有用资源 因为 SDK 中的所有代码示例都使用键盘 API它是内置函数 我在 XML 文件中设计了 IME 界面 就好
  • 将 cXML 反序列化为 C# 类

    我正在尝试将 cXML 字符串反序列化为 C 类 但是 在反序列化时 除了根元素之外 我似乎无法获得任何东西来反序列化 如何反序列化 XML 文档 https stackoverflow com questions 364253 how t
  • 为什么在python中解析xml文件时会在文件中有“/>”的地方添加空格?

    当我解析 xml 文件然后将结果写入输出文件时 原始文件中存在 gt 的地方都会添加一个空格 有什么办法可以阻止它被创建吗 我编写了一些 python 代码来更新 xml 文件中的几个字段 并认为一切正常 但在原始文件和更新后的文件之间运行
  • Castle Windsor依赖注入:使用调用者类型作为参数

    以下类在温莎城堡容器中注册 namespace MyNamespace class Foo IFoo public Foo ILog log log log ILog是一个log4net记录器 当前注册如下 Component For
  • Xml、xsl Javascript 排序

    我正在寻找一种使用 javascript 对 xml 数据进行排序的方法 并希望最终过滤掉数据 我知道这一切都可以在 xsl 文件中实现 但我想在客户端进行 我已经搜索了多个使用 javascript 进行排序的地方 但其中大部分要么太特定
  • 如何使用“路径”查询 XDocument?

    我想查询一个XDocument给定路径的对象 例如 path to element I want 但我不知道如何继续 您可以使用以下方法System Xml XPath Extensions http msdn microsoft com
  • AWS CloudWatchLog 限制

    我正在尝试找到集中式解决方案来将我的应用程序日志记录从数据库 RDS 中移出 我本想使用 CloudWatchLog 但注意到 PutLogEvents 请求有限制 PutLogEvents 请求的最大速率为每秒 5 个请求 每个日志流 即
  • 在方法/数据成员中向 WCF 添加限制

    我是 WCF 新手 我尝试对数据成员添加限制 例如在这个方法中 DataMember public string StringValue get return stringValue set stringValue value 我想设置最大
  • 我无法在本地主机上播放 .mp3 文件

    我正在使用 HTML jQuery 和 XML 制作音乐播放器 XML 文件包含所有歌曲的名称及其路径 我无法在本地访问 XML 文件 因为 Chrome 不允许这样做 所以我尝试在本地主机上运行它 但本地主机不允许我播放 mp3 我在本地
  • 如何显示 RSpec 测试生成的 SQL 查询日志?

    我正在为我的 Rails 3 应用程序编写规范 我想测试数据库事务是否真的有效 如果能够看到我的应用程序在规范驱动下生成的 sql 查询 这将非常有帮助 有没有办法像在 Rails 控制台中一样查看查询 我正在使用 Rails 3 0 9
  • 膨胀类 android.support.design.widget.NavigationView 时出错

    我按照 NavigationView 的教程进行操作 但无法解决此错误消息 Error inflating class android support design widget NavigationView 教程链接 https www

随机推荐