【问题标题】:Trouble getting log4j to output to file无法让 log4j 输出到文件
【发布时间】:2013-06-25 18:15:05
【问题描述】:

我使用 Maven 配置文件构建了一个 jar,并希望将 log4j 输出重定向到一个文件。

这是我的 log4j.properties 文件:

# Root logger option
log4j.rootLogger=DEBUG, file

# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=./reporting.log
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.MaxBackupIndex=1
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

这是我从 bash 运行的命令:

java -jar -Dlog4j.configuration=~/log4j.properties myjar.jar

尽管如此,所有的日志输出都会输出到标准输出。有什么建议吗?

编辑:

试过了:

  • 在jar的根目录下包含properties文件,默认情况下应该在该目录下获取
  • 在运行时指定类路径:-cp
  • 通过 maven 在清单中添加类路径
  • 在运行时指定属性文件:-Dlog4j.properties=
  • 在运行时指定单个属性:Dlog4j.rootLogger=DEBUG,F -Dlog4j.appender.F=...

这些都没有奏效 - 我的想法已经不多了。

【问题讨论】:

  • 您是否尝试过使用其他路径而不是 ./reporting.log?也许想知道这是否是问题所在?
  • 另外一个原因可能是~/log4j.properties没有扩展为实际路径,请尝试使用绝对路径。
  • 你用绝对路径试过了吗?
  • 我将属性文件的路径更改为绝对路径以及日志的输出路径 - 运气不好
  • jar 中没有另一个 log4j.properties 文件,是吗?

标签: java maven jar log4j


【解决方案1】:

假设,log4j.properties 位于/user/home 运行

java -cp /user/home:. -jar myjar.jar
  • 默认配置文件名已经是log4j.properties
  • -Dlog4j.configuration中指定的文件需要在你的类路径中。

所以,如果您的属性文件是 /user/home/temp-log4j.properties,那么您将运行

java -cp /user/home:. -Dlog4j.configuration=temp-log4j.properties -jar myjar.jar

【讨论】:

  • 如果他的.jar 有一个带有类路径的清单,这将被完全忽略。
  • 属性文件是 /Users/benkaiser/log4j.properties。运行以下命令:
  • java -cp /Users/benkaiser:. -Dlog4j.configuration=log4j.properties -jar myjar.jar
  • @benjaminhkaiser 添加 -Dlog4j.debug 以查看 log4j 内部调试消息。将有助于排除故障。另外,请确认 jar 中没有其他属性文件。
  • 我建议您将一个新 jar 与一个主类捆绑在一起,该主类只记录一条语句。然后尝试像以前一样运行它。这将有助于确定它是环境问题还是与 jar 的代码库有关。
【解决方案2】:

我使用这个配置,也许这​​个配置可以帮助你,我认为你的问题与路径有关,尝试使用完整路径,如 FILE.file 属性中的那个,它是绝对路径

log4j.rootLogger = DEBUG, FILE
log4j.appender.FILE=org.apache.log4j.RollingFileAppender
log4j.appender.FILE.File=/home/mtataje/logs/repo.log
log4j.appender.FILE.Threshold=debug
log4j.appender.FILE.Append=true
log4j.appender.FILE.MaxFileSize=1MB
log4j.appender.FILE..MaxBackupIndex=2
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n

希望它可以帮助你,最好的问候。

【讨论】:

  • 谢谢 - 似乎没有帮助。我添加了这个属性文件并使用了命令行的绝对路径,但它仍然将所有输出打印到标准输出。
猜你喜欢
  • 2018-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-14
相关资源
最近更新 更多