java - 配置更改后找不到 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 以查看是否会有所作为,但同样的问题仍然存在。我什至把它改回原来的配置,仍然有同样的问题。
解决方案
推荐阅读
- laravel - BadMethodCallException 调用未定义的方法 App\AskQuestion::email()
- django - 从 Django 中的多个模型中获取数据
- java - SQL 更新查询在我的 Java 程序中不起作用
- javascript - JavaScript Mocha Selenium 在谷歌中输入短语
- android - 错误:无法解决:com.google.firebase:firebase-crash:17.2.2
- javascript - 将 monaco-yaml 与 monaco-editor 集成
- python - Pandas 取下面的行值
- python - Python 函数的空括号
- python - 如何从 ndarray 帧中访问单个像素阵列,或者是否有更好的方法来存储帧并访问它们?
- dart - 无法在 dart 项目中运行 genhtml