2016-04-15 237 views
0

我正在开发一个批处理项目,该项目有两个批次,每个批处理都有一个单独的启动器。 我使用log4j2与以下配置日志:log4j2:多个appender将相同的输出写入多个文件

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration monitorInterval="30" status="info" xmlns="http://logging.apache.org/log4j/2.0/config"> 
<properties> 
    <property name="patternlayout">%d [%t] %-5level %logger{36} [%method:%line] - %msg%n</property> 
    <property name="filename_first_batch">c:/logs/batchs/first_batch.log</property> 
    <property name="filename_first_batch-pattern">c:/logs/batchs/second_batch-%d{yyyy-MM-dd}-%i.log.zip</property> 
    <property name="filename_second_batch">c:/logs/batchs/first_batch.log</property> 
    <property name="filename_second_batch-patten">c:/logs/batchs/second_batch-%d{yyyy-MM-dd}-%i.log.zip</property> 
</properties> 

<Appenders> 
    <!-- the standard-console-appender --> 
    <Console name="console" target="SYSTEM_OUT"> 
     <PatternLayout pattern="${patternlayout}" /> 
    </Console> 

    <!-- appender for the first batch --> 
    <RollingFile name="appender_first_batch" fileName="${filename_first_batch}" filePattern="${filename_first_batch-pattern}" 
     append="false" bufferedIO="true" immediateFlush="true"> 
     <PatternLayout pattern="${patternlayout}" /> 
     <Policies> 
      <TimeBasedTriggeringPolicy /> 
      <SizeBasedTriggeringPolicy size="10 MB" /> 
     </Policies> 
     <DefaultRolloverStrategy max="10" /> 
    </RollingFile> 

    <!-- appender for the second batch --> 
    <RollingFile name="appender_seond_batch" fileName="${filename_second_batch}" filePattern="${filename_second_batch-patten}" 
     append="false" bufferedIO="true" immediateFlush="true"> 
     <PatternLayout pattern="${patternlayout}" /> 
     <Policies> 
      <TimeBasedTriggeringPolicy /> 
      <SizeBasedTriggeringPolicy size="10 MB" /> 
     </Policies> 
     <DefaultRolloverStrategy max="10" /> 
    </RollingFile> 

</Appenders> 

<Loggers> 
    <Root level="info"> 
     <AppenderRef ref="console" /> 
    </Root> 

    <!-- first batch logger --> 
    <Logger name="com.mycompany.batch.launcher.FirstBatchLauncher" additivity="false" level="ALL"> 
     <AppenderRef ref="appender_first_batch" level="ALL" /> 
     <AppenderRef ref="console" /> 
    </Logger> 

    <!-- second batch logger --> 
    <Logger name="com.mycompany.batch.SecondBatchLauncher" additivity="false" level="ALL"> 
     <AppenderRef ref="appender_second_batch" level="ALL" /> 
     <AppenderRef ref="console" /> 
    </Logger> 

    <logger name="org.springframework" additivity="false"> 
     <AppenderRef ref="console" /> 
     <AppenderRef ref="appender_first_batch" level="info" /> 
     <AppenderRef ref="appender_second_batch" level="info" /> 
    </logger> 

    <logger name="org.hibernate" additivity="false"> 
     <AppenderRef ref="console" /> 
     <AppenderRef ref="appender_first_batch" level="info" /> 
     <AppenderRef ref="appender_second_batch" level="info" /> 
    </logger> 

</Loggers> 

当我运行批处理启动,我得到的日志文件创建的正确,但是 如果任何批次发射器启动时,它将相同的输出写入其他文件。 我想要的是每个批次都将其输出记录到专用文件中。

回答

0

我认为您正在使用脚本启动批处理作业。如果包含-DjobName = batchJobName其中batchJobName是要使用的文件的名称,则可以使用$ {sys:batchJobName}来确定文件的名称。

+0

文件名已在log4j2配置中指定,此外,我已经尝试了您的建议,但它不起作用,我仍然将相同的输出日志写入其他文件 – bolbol

相关问题