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

Pac*_*ver 8 java logging log4j spring-boot

我试图使用Log4j写入我的文件系统中的本地日志文件.

实际上使用了来自不同项目的确切属性文件,只是更改了顶级目录的名称以匹配我的应用程序名称.不同的项目写入logs.log文件,但这根本不打印任何内容.两个项目都使用相同版本的log4j.

的pom.xml

<dependency>
   <groupId>log4j</groupId>
   <artifactId>log4j</artifactId>
   <version>1.2.17</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

在我的基于Unix的macOS上,我进入/ var/log /并执行以下操作:

sudo mkdir myapp
chmod 777 myapp
Run Code Online (Sandbox Code Playgroud)

在myapp内部,以下设置遍布整个地方:

if (log.isDebugEnabled() {
   log.debug("print something");
}
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

不明白为什么在里面:

/var/log/myapp/ 
Run Code Online (Sandbox Code Playgroud)

没有logs.log文件!

我在使用以下构建的Spring Boot 1.5.4.RELEASE中使用它:

mvn clean install
Run Code Online (Sandbox Code Playgroud)

然后运行使用:

java -jar myapp.jar 
Run Code Online (Sandbox Code Playgroud)

要么

mvn spring-boot:run
Run Code Online (Sandbox Code Playgroud)

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

感谢您抽出时间来阅读.

mxf*_*mxf 3

@Veeram是对的 - 日志是由logback打印的,它是 Spring Boot 附带的。您需要将其替换为Log4j。然而,现在这不是一个选择:

来自Spring Boot 1.4.0 发行说明

Apache EOL 公告后,Log4j 1 支持已被删除。

所以我建议您考虑升级到Log4j 2

PS我认为您仍然可以使用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')
}
Run Code Online (Sandbox Code Playgroud)