在Log4j2中,如何将XML模式与log4j2.xml关联起来?

7 浏览
0 Comments

在Log4j2中,如何将XML模式与log4j2.xml关联起来?

我已经开始尝试新的Log4j2。从迁移文档来看,似乎已经取消了XML Schema/DTD规范。这似乎是一种倒退。理应能够将XML Schema或DTD与我的log4j2.xml相关联,以帮助编写和验证。在文档中我找不到任何有用的信息,也找不到XML Schema或DTD本身。那么,在Log4j2中,我应该如何将XML Schema与log4j2.xml关联起来呢?

0
0 Comments

在Log4j2中,如何将XML模式与log4j2.xml关联起来?

问题的出现原因:

Log4j2官网上似乎没有提到如何关联XML模式,但是如果您下载2.0 beta 5版本,您会发现路径core/src/main/resources中包含了一个Log4J 2模式(Log4J-V2.0.xsd)。

解决方法:

如Muel所述,可以使用自定义的appender。因此,我相信只有在主配置节点中使用strict="true"才能正常工作。

示例代码如下:


值得一提的是,虽然大部分情况下这个方法是有效的,但我发现即使是一些已经记录为有效的属性(例如monitorInterval)在XSD中也没有出现。

希望在未来的版本中,能够提供一个准确的strict格式的XSD。

希望这对您有所帮助。

更新:

关于XSD验证问题,请参见LOG4J2-170。

三年半后,这个问题仍然未解决。这就是为什么不应该仅仅根据文档选择库的原因。

那个问题可能已经过时了,但99%的内容都能正确验证,而且您还可以获得内容辅助功能。XSD始终可在log4j-core-2.6.2.jar/Log4j-config.xsd中找到,您可以将其复制出来并添加该属性。

这也可能有所帮助:marxsoftware.blogspot.com/2016/08/…

0
0 Comments

在Log4j2中,如果想要将XML模式与log4j2.xml文件关联起来,可以使用Strict XML格式。使用Strict XML格式可以通过XML模式进行验证。然而,在使用Strict XML格式时需要注意,它不允许在Logger中使用可选的appender。

要使用XML模式验证Log4j2,需要指定Log4j2配置文件中的严格模式,并且使用xsi:noNamespaceSchemaLocation属性来指定XML模式的位置。在配置文件中,可以使用以下代码来指定Strict XML格式和XML模式的位置:

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

需要注意的是,使用的XML模式的位置可能会发生变化。原先提供的位置已经过时,新的位置可以在以下链接中找到:

https://raw.githubusercontent.com/apache/logging-log4j2/master/log4j-core/src/main/resources/Log4j-config.xsd

0
0 Comments

问题的原因是在配置Log4j2时,需要将XML Schema与log4j2.xml关联起来,以确保配置文件的正确性和有效性。

解决方法是在log4j2.xml文件中添加以下代码片段:

<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">

这段代码会将log4j2.xml的命名空间与XML Schema相关联,以确保配置文件的正确性。

另外,还可以根据具体的Log4j2版本,将xsi:schemaLocation中的URL更改为相应版本的URL,以确保使用正确的XML Schema。

通过以上方法,可以解决Log4j2与XML Schema的关联问题,确保配置文件的正确性和有效性。

0