java - 未找到 Log4j2.xml 配置文件
问题描述
我有一个项目,我试图让 Apache Log4j2 用于登录不同的文件。我的项目是 Spring 应用程序,我在项目结构中有一个配置文件 log4j2.xml,但是当我运行项目时,无论是作为 Spring Boot 还是作为来自 tomcat 的战争,除了默认的标准输出之外似乎没有发生任何日志记录。
我的项目结构:
-src
--main
---resources
----static
----templates
----application.properties
----log4j2.xml
我的配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="TRACE" monitorInterval="1800">
<Properties>
<Property name="logPattern">%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${hostName} --- [%15.15t] %-40.40c{1.} : %m%n%ex</Property>
<Property name="log-path">${sys:catalina.home}/logs</Property>
<Property name="secondary_path">C:/TEMP/logs</Property>
</Properties>
<Appenders>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="${logPattern}"/>
</Console>
<RollingFile name="FileAppenderInfo" fileName="${secondary_path}/stream-info.log" filePattern="${secondary_path}/stream-info-%d{yyyy-MM-dd}-%i.log" append="true" immediateFlush="true">
<PatternLayout>
<Pattern>${logPattern}</Pattern>
</PatternLayout>
<Policies>
<SizeBasedTriggeringPolicy size="10MB"/>
</Policies>
<DefaultRolloverStrategy max="10"/>
</RollingFile>
<RollingFile name="FileAppenderError" fileName="${secondary_path}/stream-error.log" filePattern="${secondary_path}/stream-error-%d{yyyy-MM-dd}-%i.log" append="true" immediateFlush="true">
<PatternLayout>
<Pattern>${logPattern}</Pattern>
</PatternLayout>
<Policies>
<SizeBasedTriggeringPolicy size="10MB"/>
</Policies>
<DefaultRolloverStrategy max="10"/>
</RollingFile>
</Appenders>
<Loggers>
<Logger name="InfoLogger" level="error">
<AppenderRef ref="FileAppenderInfo"/>
</Logger>
<Logger name="ErrorLogger" level="error">
<AppenderRef ref="FileAppenderError"/>
</Logger>
<Root level="error">
<AppenderRef ref="STDOUT"/>
</Root>
</Loggers>
</Configuration>
我曾尝试寻找解决方案,但似乎无法找出问题所在,我什至尝试创建一个新项目并实现依赖项、xml 文件并尝试登录代码。
我的代码如下所示:
private static final Logger log = LogManager.getLogger("InfoLogger");
log.info("POST HAS BEEN MADE");
Pom 文件:
<!-- Dependency for log4j2 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.11.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.11.1</version>
</dependency>
我也尝试过不使用版本标签。
希望任何人都可以帮助谢谢
解决方案
两个建议:
1) 使用包名指定记录器。
<Logger name="com.sample" level="error">
<AppenderRef ref="FileAppenderInfo"/>
</Logger>
2)更改您的代码以匹配记录器
private static final Logger log = LogManager.getLogger(); // 默认取当前类名
或者
LogManager.getLogger(Test.class.getName()); //指定类名
推荐阅读
- python-3.x - 如何使用 python 在暗网中运行预训练的权重?
- laravel - 我正在使用 Putty 在 Godaddy VPS 上运行和编译 vue js + laravel 应用程序。更改未生效
- php - mysql 将列更新为 null 或其值
- java - 无法在 SQL Server Profiler 中查看已执行的 SQL 语句
- c# - 在没有用户的情况下访问 GraphAPI 时在邮箱文件夹上创建订阅所需的权限
- xamarin - 如何检测 Xamarin 表单中的 Internet 连接?
- alexa - 亚马逊 Alexa 技能启用设备上的卡片没有屏幕
- java - java中的处理代码可以作为gui应用程序在处理ide之外运行吗?
- quickfix - 如何使用 quickFix/n 包中的 FIXT11 功能
- laravel - 如何将 laravel 表单删除转换为字符串以在返回控制器上使用它?