2017-07-18 7 views
1

を使用して、私のサービスを開始すると、新しいログファイルを作成しないlog4j2の私の構成ガイドです:は、以下のlog4j2

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration status="trace" name="MyApp" packages="com.swimap.base.launcher.log"> 
    <Appenders> 
    <RollingFile name="RollingFile" fileName="logs/app-${date:MM-dd-yyyy-HH-mm-ss-SSS}.log" 
       filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz"> 
     <PatternLayout> 
     <Pattern>%d %p %c{1.} [%t] %m%n</Pattern> 
     </PatternLayout> 
     <Policies> 
     <SizeBasedTriggeringPolicy size="1 KB"/> 
     </Policies> 
     <DefaultRolloverStrategy max="3"/> 
    </RollingFile> 
    </Appenders> 
    <Loggers> 
    <Root level="trace"> 
     <AppenderRef ref="RollingFile"/> 
    </Root> 
    </Loggers> 
</Configuration> 

問題は私のサービスを起動するたびに、新しいログも古い作成されるということです1つは特定のサイズに達していません。プログラムが頻繁に再起動すると、決して圧縮されない多くのログファイルが '.log'で終わってしまいます。

ログは、私はこのようだ:

/log4j2/logs 
/log4j2/logs/2017-07 
/log4j2/logs/2017-07/app-07-18-2017-1.log.gz 
/log4j2/logs/2017-07/app-07-18-2017-2.log.gz 
/log4j2/logs/2017-07/app-07-18-2017-3.log.gz 
/log4j2/logs/app-07-18-2017-20-42-06-173.log 
/log4j2/logs/app-07-18-2017-20-42-12-284.log 
/log4j2/logs/app-07-18-2017-20-42-16-797.log 
/log4j2/logs/app-07-18-2017-20-42-21-269.log 

誰かがどのように私は私のプログラムの起動時に存在しているログファイルにログ追加することができ、私を伝えることができますか?あなたが答えに近づくのを助けることができるかどうか、多くのおかげです!

答えて

0

log4j2構成ファイルにfileName="logs/app-${date:MM-dd-yyyy-HH-mm-ss-SSS}.logがあることが問題だと思います。

このfileNameテンプレートは、log4j2が現在の日付+時間+分+秒+ミリ秒の名前を含む名前のログファイルを作成することを意味します。

HH-mm-ss-SSSセクションを削除する必要があります。これにより、毎日のローリングファイルが作成され、アプリが再起動されるたびに新しいファイルが作成されなくなります。

テンプレートで再生し、必要な形式を選択することができます。そして、それはこれを実装することは難しいことではありませんfileName=app.log

+0

大変感謝します。あなたの提案は役に立ちそうです。しかし、ビジネスが許可されていないため、ログファイル名の形式を変更できません。 –

0

のように、一定のファイル名を作成する - あなたは永遠に一つだけのログファイルが必要な場合

public String getCurrentFileName(RollingFileManager manager) 

Mybe誰かが同じ問題に出会い、これは彼を助けることができる:インタフェースDirectFileRolloverStrategyは、法の下に実装があります。