2016-04-15 14 views
0

私はバッチバッチプロジェクトに取り組んでいます。バッチプロジェクトには、それぞれに別々のランチャーを持つ2つのバッチがあります。 私は次のように構成してログインするためのlog4j2を使用しています:log4j2:同じ出力が複数のファイルに書き込まれる

<?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

関連する問題