こんにちは。平田です。
いつの間にかWildfly / JBoss EAPに、時間とサイズの両方でローテーションするログハンドラが追加されていたので試してみました。
JBoss EAPのログ管理機構は、jboss-logmanagerによって提供されます。この中にPeriodicSizeRotatingHandler.javaというハンドラがあり、時間とサイズの両方でローテーションできます。
EAP 6.3以前はカスタムハンドラとして、6.4以降はPeriodic Size Rotating Handlerという組み込みハンドラとして使用します。ここでは7.0を使います。
EAPを起動した状態で、以下のスクリプトをCLIで流します。
/subsystem=logging/periodic-size-rotating-file-handler=FILE2:add(file={relative-to="jboss.server.log.dir", path="server.periodic-size-rotating.log"}, append=true, suffix=".yyyy-MM-dd_HHmm", rotate-size=1024, max-backup-index=3) /subsystem=logging/root-logger=ROOT:write-attribute(name=handlers, value=["CONSOLE", "FILE", "FILE2"]
ログを流すと、1024バイトを超えたとき、1分おきにローテーションします。
server.periodic-size-rotating.log server.periodic-size-rotating.log.2016-08-25_1218 server.periodic-size-rotating.log.2016-08-25_1218.1 server.periodic-size-rotating.log.2016-08-25_1219 server.periodic-size-rotating.log.2016-08-25_1219.1 server.periodic-size-rotating.log.2016-08-25_1219.2 server.periodic-size-rotating.log.2016-08-25_1219.3 server.periodic-size-rotating.log.2016-08-25_1220 server.periodic-size-rotating.log.2016-08-25_1220.1 server.periodic-size-rotating.log.2016-08-25_1220.2 server.periodic-size-rotating.log.2016-08-25_1220.3 server.periodic-size-rotating.log.2016-08-25_1221 server.periodic-size-rotating.log.2016-08-25_1221.1 server.periodic-size-rotating.log.2016-08-25_1221.2 server.periodic-size-rotating.log.2016-08-25_1221.3 server.periodic-size-rotating.log.2016-08-25_1222.1 server.periodic-size-rotating.log.2016-08-25_1222.2
ちなみに時間でローテーションしつつ、max-backup-indexを超えた時に削除してくれるかなぁ、と思いきやダメでした。あくまでサイズローテーションの添字の最大値のようです。