web-dev-qa-db-ja.com

logrotateはcatalina.outを回転しません

Logrotateを使用して手動でlogrotateを呼び出すことができますが、正常に機能しますが、logrotateを使用してTomcatのcatalina.outを毎日自動的にローテーションさせようとしています。私はそこにあるすべてのソリューションを試しましたが、回転させることができません。私は基本的にRHEL 7であるOracle Linux 7.5を使用しています。

これが私が取ったステップです:

次のようなファイル/etc/logrotate.d/tomee.confを作成しました。

    /Apache-tomee-plus-7.0.4/logs/catalina.out
    {
        su opc opc
        daily
        rotate 7
        compress
        notifempty
        missingok
        copytruncate
    }

Logrotateを手動で実行でき、Sudo /usr/sbin/logrotate /etc/logrotate.confを使用して問題なく動作します

また、Sudo /usr/sbin/logrotate -d /etc/logrotate.confを使用してデバッグを試みましたが、出力にエラーはありません

    ...
    rotating pattern: /Apache-tomee-plus-7.0.4/logs/catalina.out
     after 1 days (7 rotations)
    empty log files are not rotated, old logs are removed
    switching euid to 1000 and egid to 1000
    considering log /Apache-tomee-plus-7.0.4/logs/catalina.out
      log needs rotating
    rotating log /Apache-tomee-plus-7.0.4/logs/catalina.out, log->rotateCount is 7
    dateext suffix '-20181211'
    glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
    copying /Apache-tomee-plus-7.0.4/logs/catalina.out to /Apache-tomee-plus-7.0.4/logs/catalina.out-20181211
    truncating /Apache-tomee-plus-7.0.4/logs/catalina.out
    compressing log with: /bin/gzip
    switching euid to 0 and egid to 0
    ...

ただし、それでも毎日自動的に実行されるわけではありません。

/var/lib/logrotate/logrotate.statusによると、他のログはローテーションされているが、catalina.outではないため、logrotateが実行されていることも知っています。

    cat /var/lib/logrotate/logrotate.status
    logrotate state -- version 2
    "/var/log/yum.log" 2018-11-29-18:44:14
    "/var/log/up2date" 2018-9-17-19:0:0
    "/Apache-tomee-plus-7.0.4/logs/catalina.out" 2018-12-8-0:37:14
    "/var/log/chrony/*.log" 2018-9-17-19:0:0
    "/var/log/wtmp" 2018-12-3-17:48:49
    "/var/log/spooler" 2018-11-29-18:44:14
    "/var/log/btmp" 2018-12-3-17:48:49
    "/var/log/iscsiuio.log" 2018-9-17-19:0:0
    "/var/log/maillog" 2018-12-11-3:7:1
    "/var/log/secure" 2018-12-11-3:7:1
    "/var/log/messages" 2018-12-11-3:7:1
    "/var/account/pacct" 2018-9-17-19:0:0
    "/var/log/cron" 2018-12-11-3:7:1

12-11にローテーションされたという複数のエントリがあることに注意してください。ただし、catalina.outは12-8からローテーションされていませんが、まだローテーションしていません。

どんな助けでも大歓迎です。ありがとう。

7
Justin

これは多くの意見を得ているので、私が見つけた解決策を皆さんに知らせます。

Logrotateをcatalina.outで動作させることができなかったので、それがあなたの探しているものであれば申し訳ありません。

私ができたことは、catalina.outが生成されないようにすることです。これを行うには、Apache-tomee-plus-7.0.4/binにsetenv.shというファイルを作成し、次の行を挿入します

export CATALINA_OUT="/dev/null"

Tomeeを起動すると、catalina.shでは次のようになります。

eval $_Nohup "\"$_RUNJAVA\"" "\"$LOGGING_CONFIG\"" $LOGGING_MANAGER $Java_OPTS $CATALINA_OPTS \
  -classpath "\"$CLASSPATH\"" \
  -Djava.security.manager \
  -Djava.security.policy=="\"$CATALINA_BASE/conf/catalina.policy\"" \
  -Dcatalina.base="\"$CATALINA_BASE\"" \
  -Dcatalina.home="\"$CATALINA_HOME\"" \
  -Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
  org.Apache.catalina.startup.Bootstrap "$@" start \
  >> "$CATALINA_OUT" 2>&1 "&"

したがって、このtomeeをバックグラウンドで実行するには、ファイルに出力する必要があるようです。/dev/nullに出力すると、どこかに出力できますが、どこにも出力されません

1
Justin

これは古いケースですが、元の質問であるログをローテーションするため、ソリューションを追加する必要があると感じました。

私の場合、最初の質問でジャスティンが行ったのとほぼ同じ方法で/etc/logrotate.d/Tomcatファイルを設定しました。

/<Apache-location>/Tomcat/logs/catalina.out {
  daily    
  copytruncate
  rotate 180
  compress
  missingok
  maxsize 200M
}

(私のApacheの場所は奇妙なので、必要に応じて置き換えます。rotate 180計算がそれほど遠くない場合、ログを約30日間保持します(24時間* 30日= 720時間-> 4時間ごとにローテーションする場合、720/4 = 180回になります-> 180個のログファイルを保持します))

しかし、通常のcronjobから実行をトリガーします。

0 */4 * * * /usr/sbin/logrotate -vf /etc/logrotate.d/Tomcat >> /var/log/cut.log 2>&1

毎日ローテーションするには、cronジョブの最初の部分を調整してください。 0 0 * * *(毎日真夜中)。

-vfオプションは、詳細をオンにし(cronのログを記録するため)、ローテーションを強制的に実行します。 /var/log/cut.logは、cronジョブのロギング用に特別に追加したファイルです。 >> /var/log/cut.log 2>&1もちろん削除できます。

Rootユーザーとしてrotation/cronジョブを実行しています。

最初はlotの問題が発生した後、これは私のシステムで機能するようです。これがidealソリューションであるかどうかはわかりませんが、少なくとも私はcatalina.outは、私の主な目標である天空以上に成長し、元の質問の目標も疑っています...

0
Vandalf

Logrotate.statusの出力から、catalina.outがlogrotateによって制御されていないことは明らかです。

/ etc/logrotate.confファイルで、次の行を確認してください

include /etc/logrotate.d

この行が存在しない場合は追加してください。この行が存在する場合のみ、/ etc/logrotate.d内に追加された構成が考慮されます。

0
Sreeragh A R