Java 无法将log4j输出到文件
我使用Maven概要文件构建了一个jar,并希望将log4j输出重定向到一个文件 这是我的log4j.properties文件:Java 无法将log4j输出到文件,java,maven,jar,log4j,Java,Maven,Jar,Log4j,我使用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
# 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的根目录中包含属性文件,默认情况下应该在该目录中提取属性文件
- 在运行时指定类路径:-cp
- 通过maven在清单中添加类路径
- 在运行时指定属性文件:-Dlog4j.properties=
- 在运行时指定单个属性:Dlog4j.rootLogger=DEBUG,F-Dlog4j.appender.F=
所有这些都不起作用-我没有主意了。我使用这个配置,也许这个配置中的某些东西可以帮助您,我认为您的问题与路径有关,请尝试使用完整的路径,如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
希望它能帮助您,祝您好运。假设,
log4j.properties
位于/user/home
run
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
您是否尝试过使用其他路径而不是./reporting.log?也许想知道这是否是问题所在?另一个原因可能是
~/log4j.properties
没有扩展到实际路径,试着改用绝对路径。你用绝对路径试过了吗?我把属性文件的路径改成了绝对路径,也把日志的输出路径改成了绝对路径-不,幸运的是,你的jar中没有另一个log4j.properties文件,是吗?谢谢-似乎帮不上忙。我添加了这个属性文件,并使用了来自命令行的绝对路径,但它仍然将所有输出打印到stdout。如果他的.jar
有一个带有类路径的清单,这将被完全忽略。属性文件是/Users/benkaiser/log4j.properties。运行以下命令:java-cp/Users/benkaiser:-Dlog4j.configuration=log4j.properties-jarmyjar。jar@benjaminhkaiser还添加-Dlog4j.debug以查看log4j内部调试消息。将有助于排除故障。另外,请验证jar中没有其他属性文件。我建议您将一个新的jar与一个只记录语句的主类绑定在一起。然后试着像以前一样运行它。这将有助于确定这是环境问题还是与jar的代码库有关。