小智 17
请重新阅读有关XML配置的Log4J2文档,您将找到以下两个位置:
可以使用两种XML风格配置Log4j; 简洁和严格.简洁的格式使配置变得非常简单,因为元素名称与它们所代表的组件相匹配,但是无法使用XML模式进行验证.例如,通过在其父appenders元素下声明名为Console的XML元素来配置ConsoleAppender.但是,元素和属性名称不区分大小写.此外,可以将属性指定为XML属性,也可以指定为没有属性且具有文本值的XML元素.
再进一步:
严格的XML.除了上面简洁的XML格式之外,Log4j还允许以更"正常"的XML方式指定配置,可以使用XML Schema进行验证.这是通过将上面的友好元素名称替换为其对象类型来实现的,如下所示.例如,不是使用名为Console的元素配置ConsoleAppender,而是将其配置为具有包含"Console"的type属性的appender元素.
因此,如果要对Log4j2使用XML模式验证,则只使用Strict XML格式.
sfo*_*dal 11
我似乎无法在Log4J2网站上找到对XSD的引用,但是如果你下载for for beta beta 5,你会发现它在路径core/src中包含一个Log4J 2架构(Log4J-V2.0.xsd) /主/资源.
正如Muel所说,很有可能拥有自定义appender.因此,我相信只有在主配置节点中使用strict ="true"才能使用它.
请参阅:http://logging.apache.org/log4j/2.x/manual/configuration.html#ConfigurationSyntax
我已经使用schema属性将其添加到配置中,它似乎主要起作用.
这是一个例子:
<configuration name="testConfiguration"
status="debug"
strict="true"
monitorInterval="30"
schema="Log4J-V2.0.xsd">
Run Code Online (Sandbox Code Playgroud)
我说"大多数"是因为我发现有一个问题,即使XSD中缺少一些记录有效的属性(例如monitorInterval).
希望在将来的版本中,可以获得严格格式的准确XSD.
希望这个对你有帮助.
史蒂夫
更新: 有关XSD验证的问题,请参阅LOG4J2-170
x54*_*545 10
适用于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">
Run Code Online (Sandbox Code Playgroud)
或者针对标记版本:
<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">
Run Code Online (Sandbox Code Playgroud)
我认为使用log4j2可能没有架构/ DTD.最近我写了一个自定义appender,并支持appender我的log4j2.xml
样子如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="ERROR" packages="package.same.as.custom.appender">
<appenders>
<CyclicBuffer name="CyclicBuffer" bufferSize="200">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%t] %c{1.} - %msg%n"/>
</CyclicBuffer>
</appenders>
<loggers>
<root level="info">
<appender-ref ref="CyclicBuffer"/>
</root>
</loggers>
</configuration>
Run Code Online (Sandbox Code Playgroud)
需要注意的重要事项是,我有一个完全自定义的CyclicBuffer
元素,并且它具有完全自定义的bufferSize
属性.查看周围的文档@PluginFactory
以及@Plugin
更多详细信息.
由于这种定制,我不认为XML可以通过标准的通用XSD/DTD进行验证.相反,如果您希望验证XML,我认为您需要创建自己的XSD.
需要注意的一件重要事情是,在我的XML中,我得到了:<configuration status="ERROR"
.如果存在,log4j2将在运行时输出与错误配置相关的任何错误.虽然不如XML验证方便,但它也非常有用!
Muel,希望这有一些帮助.
归档时间: |
|
查看次数: |
22067 次 |
最近记录: |