Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法将log4j输出到文件_Java_Maven_Jar_Log4j - Fatal编程技术网

Java 无法将log4j输出到文件

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

我使用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的根目录中包含属性文件,默认情况下应该在该目录中提取属性文件
  • 在运行时指定类路径:-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的代码库有关。