log4j RollingFileAppender 创建文件但将其留空

log4j RollingFileAppender creates file but leaves it empty

我有一个 log4j.properties 文件:

log4j.logger.com.mypackage=debug, R, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=myapplication.log
log4j.appender.R.MaxFileSize=10MB
log4j.appender.R.MaxBackupIndex=10 
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n

登录到 stdout 工作正常,如果我将第一行中的 "debug" 更改为 "error",我只会在 stdout 中收到错误消息。

myapplication.log 已创建,但它是空的。如果我从第一行删除 "R",将不会创建文件。

ll 将文件显示为

-rw-r--r--  1 <myname>  staff     0B Oct 28 16:26 myapplication.log

我做了一个 chmod 777 myapplication.log 但没有帮助。

我在 OS X 10.11.1 使用 STS 3.6.4

我搜索了 google 和 Whosebug,但到目前为止找不到解决方案。

编辑: 我更改了行

log4j.logger.com.mypackage=debug, R, stdout

log4j.rootLogger=debug, R, stdout

现在消息被写入文件,但只有那些不是来自 mypackage 的消息。

我将文件位置更改为

log4j.appender.R.File=${catalina.home}/logs/myapplication.log

现在我将日志消息写入文件。

我不知道为什么会这样,但是写入 myapplication.log(没有路径)只会写入来自其他库的日志消息。