java - Spring Boot - log4j2.properties 创建日志文件但不将日志写入文件
问题描述
我在 springboot 应用程序中使用了 log4j2.properties 文件。正在创建日志文件,但未将日志写入文件。
请查看以下详细信息:
log4j2.properties
name=PropertiesConfig
property.filename = C:/Logs
appenders = console, file
appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
appender.file.type = File
appender.file.name = LOGFILE
appender.file.fileName=${filename}/app.log
appender.file.layout.type=PatternLayout
appender.file.layout.pattern=[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
loggers=file
logger.file.name=com.java.app //Parent Package name for the application
logger.file.level = debug
logger.file.appenderRefs = file
logger.file.appenderRef.file.ref = LOGFILE
rootLogger.level = debug
rootLogger.appenderRefs = stdout
rootLogger.appenderRef.stdout.ref = STDOUT
POM.XML
<!-- Logging -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.11.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.11.1</version>
</dependency>
DemoApplication.java
package com.java.app;
@SpringBootApplication
public class DemoApplication extends SpringBootServletInitializer {
private final static Logger log = LogManager.getLogger(DemoApplication.class);
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(DemoApplication.class);
}
public static void main(String[] args) {
log.info("Logger enabled: Entering main \\n\\n");
SpringApplication.run(DemoApplication.class, args);
log.info("**** Demo Application Started *****");
}
}
日志出现在控制台中,但没有写入文件,因为我没有遇到问题。
奇怪的是,父包记录器“Logger enabled: Entering main \n\n”被写入文件,而另一个父记录器“**** Demo Application Started *****”没有作为代码写入文件如上所示。并且还检查了子包,即com.java.app.endpoint
记录器,即使那些也没有写入文件。
并且还确定控制台日志就像
2018-08-03 12:55:18.302 INFO 11440 --- [nio-8088-exec-1] cjceClassname:记录器消息
如果 cjce 作为日志中类名的前缀,那些没有写入文件,为什么?
我可能做错了什么。任何人都可以请帮忙。
解决方案
在 springframework.guru 上的教程之后,我也遇到了这个问题。在搜索 Spring Boot 文档后,我使用这些依赖项配置我的 pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
并添加
logging.config=src/main/resources/log4j2.properties
到 application.properties 文件中。之后,当我运行应用程序时,我可以看到日志出现在我的日志文件中。
推荐阅读
- .htaccess - .htaccess 将 /wp-login.php/ 重定向到 /login/ 但之后保留文本?
- html - html/css 是否有图层以及如何使用不透明度?
- mysql - 获取有关日期和 id 字段 mySql 的最新记录
- javascript - 打字稿:省略
不适用于枚举 - java - 我如何在列表视图中打开活动数组类名
- data-visualization - 用于可视化分层网络和评估从网络中移除节点的影响的工具
- python - Sympify“<”在自定义函数中不返回布尔值?
- python - 组的标准差返回 null
- jquery - 字体很棒的 unicode 不适用于 5.11.2 版
- html - 以角度添加涉及标志和媒体查询的类