我试图使用Log4j写入我的文件系统中的本地日志文件。
实际上使用了来自不同项目的确切属性文件,只是更改了顶级目录的名称以匹配我的应用程序名称。不同的项目写入logs.log文件,但这根本不打印任何内容。两个项目都使用相同版本的log4j。
的pom.xml
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
在我的基于Unix的macOS上,我进入/ var / log /并执行以下操作:
sudo mkdir myapp
chmod 777 myapp
在myapp内部,以下设置:
if (log.isDebugEnabled() {
log.debug("print something");
}
的myapp / SRC /主/资源/ log4j.properties:
log4j.rootCategory=DEBUG, RF
log4j.category.your.category.name=DEBUG
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%-5p [%F]: %m [%d{ISO8601}]%n
log4j.logger.com.amazonaws=DEBUG RF
log4j.appender.RF=org.apache.log4j.RollingFileAppender
log4j.appender.RF.File=/var/log/myapp/logs.log
log4j.appender.RF.MaxFileSize=10MB
log4j.appender.RF.MaxBackupIndex=30
log4j.appender.RF.layout=org.apache.log4j.PatternLayout
log4j.appender.RF.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x(%F:%L) - %m%n
Threshold=DEBUG
不明白为什么在里面:
/var/log/myapp/
没有logs.log文件!
我在使用以下构建的Spring Boot 1.5.4.RELEASE中使用它:
mvn clean install
然后使用以下任一方式运行:
java -jar myapp.jar
或
mvn spring-boot:run
如果有人能为我提供更好的属性文件或看到我做错了什么,我将不胜感激?
感谢您抽出宝贵时间阅读本文。
答案 0 :(得分:3)
@Veeram是正确的 - 日志由 logback 打印,它随Spring Boot一起提供。您需要通过 Log4j 替换它。但是,现在它不是一个选项:
来自Spring Boot 1.4.0 Release Notes:
在Apache EOL发布后,已删除Log4j 1支持。
所以我建议您考虑升级到 Log4j 2 。
P.S。我认为您仍然可以使用 Log4j 1.2 ,但在这种情况下,您必须定义并指定应从 spring-boot-starter-logging 模块中排除哪些依赖项,以及这应该添加。我已经设置了一个演示项目来重现您的问题,这里是 build.gradle 中的依赖项列表(我使用Gradle,但我认为您有一点意见):
dependencies {
compile('org.springframework.boot:spring-boot-starter') {
exclude group: 'ch.qos.logback'
exclude group: 'org.slf4j', module: 'log4j-over-slf4j'
}
compile('commons-logging:commons-logging:1.2')
compile('log4j:log4j:1.2.17')
compile('org.slf4j:slf4j-log4j12:1.7.25')
testCompile('org.springframework.boot:spring-boot-starter-test')
}
答案 1 :(得分:1)
正如@mxf所说,logback现在是Spring Boot中的默认日志记录子系统。
虽然您可以配置其他记录器,但我建议您继续使用logback,因为它确实是一个痛苦的切换记录器世界。