我有一个配置了log4j2的java应用程序,以便登录到控制台和文件。 当我从ecplise启动我的应用程序时,所有日志都可以(控制台和文件)。
当我从CMD或Powershell(作为管理员)启动应用程序的jar时,只有控制台日志有效。 如果我只通过双击启动jar,则文件日志有效(但不显示控制台)。
这是我的log4j2.xml配置:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
<Appenders>
<File name="file_all" fileName="logs/ALL.log">
<PatternLayout>
<Pattern>%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n</Pattern>
</PatternLayout>
</File>
<File name="file_error" fileName="logs/ERROR.log">
<PatternLayout>
<Pattern>%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n</Pattern>
</PatternLayout>
</File>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="trace">
<AppenderRef ref="file_all" level="INFO"/>
<AppenderRef ref="file_error" level="ERROR"/>
<AppenderRef ref="STDOUT" level="INFO"/>
</Root>
</Loggers>
</Configuration>
答案 0 :(得分:0)
您的log4j2.xml配置文件以<configuration status="off" ...
开头(或者可能是WARN或ERROR,您还没有显示完整配置)。
要进行调查,请将此更改为<configuration status="trace" ...
这将在控制台上显示输出。 (您可以将其重定向到java -jar myjar.jar > out.log
的文件。)
我希望这能为我们提供有关正在发生的事情的更多信息。请将该输出粘贴到您的问题中。
编辑:状态输出看起来不错;没有错误或任何东西。可能是双击一个jar文件与javaw(而不是java)相关联,所以没有控制台?您提到从CMD提示符或Powershell启动应用程序时,您找不到日志文件。该行&#34;启动FileManager日志/ ALL.log&#34;在状态日志中告诉我log4j2成功创建了一个输出流。但是,这是一个相对路径,状态日志没有提到绝对路径。我认为它是相对于当前目录的,那么CMD提示符或Powershell的当前目录是什么?