Logj4j2.xml 架构错误

Logj4j2.xml Schema Errors

我无法让我的 log4j2.xml 文件符合架构。没有模式规范我没有任何错误但是有了它我得到:

cvc-complex-type.2.4.d: Invalid content was found starting with element 'File'. No child element is expected at 
 this point.

cvc-complex-type.2.4.d: Invalid content was found starting with element 'Logger'. No child element is expected 
 at this point.

日志记录在没有模式的情况下工作正常,但 Eclipse 警告它丢失,所以我想把它放在适当的位置。这是我正在使用的 log4j2.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>

<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.11.1/log4j-core/src/main/resources/Log4j-config.xsd">

  <Appenders>

    <Console name="console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss z} %-5p %-5level - %msg%n"/>
    </Console>

    <File name="file" fileName="mylogfile.log" append="true">
      <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss z} %-5p %-5level - %msg%n"/>
    </File >
  </Appenders>


  <Loggers>
    <Root level="DEBUG">
      <AppenderRef ref="console"/>
      <AppenderRef ref="file"/>
    </Root>

    <Logger name="org.apache.http" level="WARN" additivity="false">
      <AppenderRef ref="console"/>
      <AppenderRef ref="file"/>
    </Logger>

    <Logger name="net.authorize.util" level="WARN" additivity="false">
      <AppenderRef ref="console"/>
      <AppenderRef ref="file"/>
    </Logger>

    <Logger name="net.authorize.api" level="WARN" additivity="false">
      <AppenderRef ref="console"/>
      <AppenderRef ref="file"/>
    </Logger>

  </Loggers>

</Configuration>

那是因为定义的模式here

  1. 没有定义名为 File 的 Appender,您是否打算在 Appender 节点下使用 Layout?尽管很奇怪,他们的示例 here 显示他们在 Console 节点之后使用。

  2. 定义Root节点出现在所有Logger节点之后

将验证的示例文件

<?xml version="1.0" encoding="UTF-8"?>

<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.11.1/log4j-core/src/main/resources/Log4j-config.xsd">

    <Appenders>

        <Appender type="file" name="" fileName="mylogfile.log">
            <Layout type="">                    
                <Pattern>%d{yyyy-MM-dd HH:mm:ss z} %-5p %-5level - %msg%n</Pattern>
            </Layout>
        </Appender>

        <Console name="console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss z} %-5p %-5level - %msg%n"/>
        </Console>


    </Appenders>


    <Loggers>

        <Logger name="org.apache.http" level="WARN" additivity="false">
            <AppenderRef ref="console"/>
            <AppenderRef ref="file"/>
        </Logger>

        <Logger name="net.authorize.util" level="WARN" additivity="false">
            <AppenderRef ref="console"/>
            <AppenderRef ref="file"/>
        </Logger>

        <Logger name="net.authorize.api" level="WARN" additivity="false">
            <AppenderRef ref="console"/>
            <AppenderRef ref="file"/>
        </Logger>

        <Root level="DEBUG">
            <AppenderRef ref="console"/>
            <AppenderRef ref="file"/>
        </Root>


    </Loggers>

</Configuration>