Log4j2:文件记录无法使用jar

时间:2014-10-23 09:44:10

标签: java logging jar log4j2

我有一个配置了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>

1 个答案:

答案 0 :(得分:0)

您的log4j2.xml配置文件以<configuration status="off" ...开头(或者可能是WARN或ERROR,您还没有显示完整配置)。

要进行调查,请将此更改为<configuration status="trace" ...

,以启用log4j的内部状态记录

这将在控制台上显示输出。 (您可以将其重定向到java -jar myjar.jar > out.log的文件。)

我希望这能为我们提供有关正在发生的事情的更多信息。请将该输出粘贴到您的问题中。


编辑:状态输出看起来不错;没有错误或任何东西。可能是双击一个jar文件与javaw(而不是java)相关联,所以没有控制台?您提到从CMD提示符或Powershell启动应用程序时,您找不到日志文件。该行&#34;启动FileManager日志/ ALL.log&#34;在状态日志中告诉我log4j2成功创建了一个输出流。但是,这是一个相对路径,状态日志没有提到绝对路径。我认为它是相对于当前目录的,那么CMD提示符或Powershell的当前目录是什么?