在 Log4j2 中,如何将 XML 架构与 log4j2.xml 关联?

2022-09-01 02:05:30

我一直在尝试新的Log4j2。从有关迁移的文档来看,XML Schema/DTD 规范似乎已被删除。

这似乎是一种倒退。当然,应该可以将XML架构或DTD与我的相关联,以帮助编写它并进行验证。我无法在文档中找到任何有用的东西,也没有找到XML架构或DTD本身。log4j2.xml

所以:在Log4j2中,我应该如何将XML架构与?log4j2.xml


答案 1

适用于 eclipse:

<Configuration strict="true"
           xmlns="http://logging.apache.org/log4j/2.0/config"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://logging.apache.org/log4j/2.0/config 
           https://raw.githubusercontent.com/apache/logging-log4j2/master/log4j-core/src/main/resources/Log4j-config.xsd">

或针对标记的版本:

<Configuration strict="true"
           xmlns="http://logging.apache.org/log4j/2.0/config"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://logging.apache.org/log4j/2.0/config 
           https://raw.githubusercontent.com/apache/logging-log4j2/log4j-2.8.2/log4j-core/src/main/resources/Log4j-config.xsd">

答案 2

请重新阅读有关 XML 配置的 Log4J2 文档,您将找到以下 2 个位置:

Log4j可以使用两种XML风格进行配置;简洁而严格简洁的格式使配置变得非常容易,因为元素名称与它们表示的组件相匹配,但是不能使用XML架构进行验证。例如,控制台应用程序是通过其父追加器元素下声明一个名为 Console 的 XML 元素来配置的。但是,元素和属性名称不区分大小写。此外,可以将属性指定为 XML 属性,也可以将其指定为没有属性且具有文本值的 XML 元素。

再进一步:

严格的 XML。除了上述简洁的XML格式外,Log4j还允许以更“正常”的XML方式指定配置,该方式可以使用XML模式进行验证。这是通过将上面的友好元素名称替换为其对象类型来实现的,如下所示。例如,不是使用名为 Console 的元素配置 ConsoleAppender,而是将其配置为具有包含“Console”的 type 属性的追加器元素。

因此,如果要对 Log4j2 使用 XML 架构验证,则仅使用严格 XML 格式


推荐