log4J没有写入Spring Boot微服务中的特定日志文件

时间:2017-09-12 02:36:19

标签: java logging spring-boot log4j

我试图使用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

如果有人能为我提供更好的属性文件或看到我做错了什么,我将不胜感激?

感谢您抽出宝贵时间阅读本文。

2 个答案:

答案 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,因为它确实是一个痛苦的切换记录器世界。