首页 > 解决方案 > 配置更改后找不到 Log4j2.xml 配置文件

问题描述

在对配置文件进行更改后,我遇到了找不到 log4j2.xml 配置文件的问题。在更改之前找到文件并且简单的日志记录正在工作。我已经有几年没有使用 log4j 并且一直在使用 java.util 日志记录来记录 weblogic 服务器上的应用程序,所以我决定再次使用 log4j。

我首先创建了一个简单的配置文件,并对其进行了测试,一切正常。

原始测试配置。

<?xml version="1.0" encoding="UTF-8"?>
  <Configuration>
     <Properties>
       <Property name="filename">/opt/www/log</Property>
     </Properties>
     <Appenders>
       <RollingFile name="StipLog" fileName="${filename}/stip-log.log" filePattern="${filename}/stip-log-%d{yyyy-MM-dd}.log">
           <PatternLayout>
               <pattern>
                [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"
            </pattern>
          </PatternLayout>
          <Policies>
              <TimeBasedTriggeringPolicy interval="1" modulate="true" />
           </Policies>
       </RollingFile>
   </Appenders>
   <Loggers>
      <Logger name="stip-debug" level="debug" additivity="true">
          <appender-ref ref="StipLog" level="debug"/>
      </Logger>
      <Root level="debug">
          <AppenderRef ref="StipLog"/>
      </Root>
    </Loggers>
  <Configuraiton>

在页面的支持 bean 中运行此代码片段与原始配置文件配合得很好。

    LOGGER.info("APP Home Page: User: ".concat(userInfoBean.getUserName()));
    LOGGER.debug("DEBUG message!");
    LOGGER.error("ERROR Message", new NullPointerException("I AM NULL"));

一切都很顺利,所以我决定尝试为我想要使用的每个日志级别配置不同的附加程序。我将原始配置更改为以下。

<?xml version="1.0" encoding="UTF-8"?>
   <Configuration>
    <Properties>
      <!-- For local logging change this porperty to a local directory. ex: C:\\Public\\log -->
      <Property name="LOGGING_ROOT">C:/Public/log</Property>
  </Properties>
  <Appenders>
    <!-- file appenders -->
      <RollingFile name="debugLog" fileName="${LOGGING_ROOT}/app-debug.log" filePattern="${LOGGING_ROOT}/app-debug-%d{yyyy-MM-dd}-%i.log">
        <LevelRangeFilter minLevel="DEBUG" maxLevel="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
        <PatternLayout>
            <pattern>
                [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"
            </pattern>
        </PatternLayout>
        <Policies>
            <TimeBasedTriggeringPolicy interval="1" modulate="true" />
        </Policies>
        <DefaultRolloverStrategy max="10"/>
      </RollingFile>
      <RollingFile name="infoLog" fileName="${LOGGING_ROOT}/app-info.log" filePattern="${LOGGING_ROOT}/app-info-%d{yyyy-MM-dd}-%i.log">
          <LevelRangeFilter minLevel="INFO" maxLevel="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
           <PatternLayout>
              <pattern>
                [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"
              </pattern>
          </PatternLayout>
          <Policies>
              <TimeBasedTriggeringPolicy interval="1" modulate="true" />
          </Policies>
          <DefaultRolloverStrategy max="10"/>
       </RollingFile>
      <RollingFile name="errorLog" fileName="${LOGGING_ROOT}/app-error.log" filePattern="${LOGGING_ROOT}/app-error-%d{yyyy-MM-dd}-%i.log">
          <LevelRangeFilter minLevel="ERROR" maxLevel="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
          <PatternLayout>
             <pattern>
                [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"
            </pattern>
          </PatternLayout>
          <Policies>
              <TimeBasedTriggeringPolicy interval="1" modulate="true" />
          </Policies>
          <DefaultRolloverStrategy max="10"/>
      </RollingFile>
      <!-- console appender -->
      <Console name="console" target="SYSTEM_OUT">
          <PatternLayout   pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n" />
    </Console>
  </Appenders>
  <Loggers>
      <Logger name="debug-logger" level="debug" additivity="true">
          <appender-ref ref="debugLog"/>
      </Logger>
      <Logger name="info-logger" level="info" additivity="true">
          <appender-ref ref="infoLog"/>
      </Logger>
      <Logger name="error-logger" level="error" additivity="true">
          <appender-ref ref="errorLog"/>
      </Logger>
      <Root level="all">
          <AppenderRef ref="console"/>
          <AppenderRef ref="debugLog"/>
          <AppenderRef ref="infoLog"/>
          <AppenderRef ref="errorLog"/>
      </Root>
  </Loggers>
</Configuration>

更改配置文件后,我现在在部署应用程序时收到以下错误消息。

错误 StatusLogger 找不到 log4j2 配置文件。使用默认配置:仅将错误记录到控制台。将系统属性 'org.apache.logging.log4j.simplelog.StatusLogger.level' 设置为 TRACE 以显示 Log4j2 内部初始化日志记录。

配置文件与登录工作时的位置相同,位于源默认包中。我将它移到 WEB-INF 以查看是否会有所作为,但同样的问题仍然存在。我什至把它改回原来的配置,仍然有同样的问题。

标签: javalogginglog4j2

解决方案


推荐阅读