你可以将stdout,stderr重定向到log4j2 v2.3中的fileappender吗?

时间:2017-01-18 14:28:01

标签: java logging stdout log4j2 jboss6.x

这是我的log4j2.xml配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT" ignoreExceptions="false">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>
    <File name="Log4JFile" fileName="/log/Log4JFile.log">
      <PatternLayout>
        <Pattern>%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n</Pattern>
      </PatternLayout>
    </File>
  </Appenders>
  <Loggers>
    <Root level="trace">
      <AppenderRef ref="Console"/>
      <AppenderRef ref="Log4JFile"/>
    </Root>
  </Loggers>
</Configuration>

我正在使用Jboss,如果您不包含配置文件,log4j会将所有内容记录到server.log。我需要将log4jstdoutstderr的所有级别记录到一个不是默认文件的单独文件中。如何在不重写Java中的print方法的情况下完成此操作?

1 个答案:

答案 0 :(得分:0)

您无法从Log4j ConsoleAppender重定向到Log4j FileAppender。

可以做的是在启动应用程序的脚本/命令中,将该命令的输出重定向到文件。这种语法取决于操作系统,但通常看起来像command > file。多个>个字符可以附加到现有文件而不是覆盖它。 (也取决于操作系统。)