24

次のlog4j2.xmlファイルがあります。

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="OFF">
  <appenders>
    <RollingFile name="testLog" fileName="test.log" filePattern="" append="false">
      <PatternLayout pattern="[%t] %-5level - %msg%n%n"/>
    <SizeBasedTriggeringPolicy size="5mb" />
    </RollingFile>
  </appenders>
  <loggers>
    <logger name="TestsLogger" level="trace" additivity="false">
      <appender-ref ref="testLog"/>
    </logger>
    <root level="debug">
      <appender-ref ref="testLog"/>
    </root>
  </loggers>
</configuration>

この構成を次のように変更するにはどうすればよいですか?

  1. 同じログファイルを何度も上書きする代わりに、5MBの制限に達した後に新しいファイルが作成されます。test1.log、test2.logなどがあると便利です。
  2. 1.で作成される部分ログファイルの数を制限するにはどうすればよいですか?私が達成したいのは、次のようなスキームです。

    creating test1.log [present log files: test1.log]
    test1.log - 5mb limit reached
    creating test2.log [present log files: test1.log, test2.log]
    test2.log - 5mb limit reached
    creating test3.log [present log files: test2.log, test3.log]
    test3.log - 5mb limit reached
    creating test4.log [present log files: test3.log, test4.log]
    and so on
    

誰かがそのようなことを達成する方法を知っていますか?もちろん、log4j2だけでそのようなことが可能であれば、それは素晴らしいことです。しかし、log4j2を、メインのJavaアプリケーションと一緒に実行し、最後の2つのログファイルをそのままにして余分なログファイルを削除するある種の外部プログラムと組み合わせる方法があるかもしれません。したがって、誰かが少なくとも1.の提案を持っている場合、それはすでに、私が探しているものである可能性があります。第二部のプログラムが書けるかもしれないから。もちろん、2番目の部分がlog4j2でも実行できれば、それは素晴らしいことです。

4

1 に答える 1

37

これまでlog4j2を使用したことはありませんが、RollingFileAppenderのドキュメントに多くの構成例が記載されています。

縫い目が次のようになるのは興味深いことです(を使用DefaultRolloverStrategy):

<RollingFile name="RollingFile" fileName="logs/app.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="5 MB"/>
  </Policies>
  <DefaultRolloverStrategy max="20"/>
</RollingFile>
于 2012-12-12T22:02:32.700 に答える