特定の起動サービスに対してlogrotateをオーバーライドする方法

特定の起動サービスに対してlogrotateをオーバーライドする方法

ディレクトリにログファイルを生成するプロジェクトmyserviceがあります。upstart/var/log/upstrart/

私のサービスはあまりにも多くのログを生成するので、この問題を解決する必要があります。それまでは、時間ではなくサイズに基づいてログファイルを回転させる必要があります。私のデフォルト設定logrotateは次のとおりです。

/var/log/upstart/*.log {
        daily
        missingok
        rotate 7
        compress
        notifempty
        nocreate
}

これを無視できますかmyservice

私の勝利を作成してフォルダlogrotate.confに追加すると、既存の設定を上書きできますか?/etc/init.d/myservice

答え1

myserviceデフォルトでは、runを使用すると設定ファイルと互換性のあるファイルもありupstartますが、後者はディレクトリではありません。または、下にサブディレクトリを持つことは非常に非標準です。/etc/init/myservice.conf/etc/init.d/myservice/etc/init/etc/init.d

つまり、アップグレードによって変更が上書きされる可能性があるため、ディストリビューションでファイルを変更するのは非常に悪い考えです。すべてのディストリビューションにはこれを防ぐメカニズムがありますが、機能しているかどうかはわかりません。ですから、/etc/logrotate.d/upstartあなたが引用した凧のソースが何であれ、むやみに扱わないでください。これは、ログファイルをに保存できないことを意味します/var/log/upstart

最も簡単な回避策は、ディレクトリを作成し、ファイルを編集して/var/log/myservice/サービス/etc/init/myservice.confにログインするように指示し、/var/log/myservice/myservice.log(最も難しい部分です。以下を参照)、必要/etc/logrotate.d/myserviceなセクションを含むファイルを作成することです。

サーバー障害デーモンに他の場所に記録するように指示する方法に関するいくつかのヒントがあります(通常は、ログを開始からsyslogに移動してからsyslogに書き込む場所を教えてください)。私はあなたのサービスについて何も知らないので、もう話しません。

関連情報