1

bashスクリプトから特定のパスのログファイルにメッセージをどのように記録しますか?

単純な実装は、次のようなコマンドになります。

echo My message >>/my/custom/path/to/my_script.log

しかし、これにはおそらく多くの欠点があります(たとえば、ログローテーションがない)。'logger'コマンドを使用することもできますが、私が知る限り、カスタムパスのログはサポートされておらず、カスタムログファイルを使用できるbashスクリプトが多数ある場合は構成が簡単ではありません。

Rubyのようなスクリプト言語では、これはすべて非常に簡単です。https ://github.com/rudionrails/yell/wiki/101-the-datefile-adapter このrubyライブラリに基づいて独自のロガーコマンドを作成し、私のbashスクリプトですが、シェルスクリプトに同様の動作を提供するよく知られたソリューションがすでにあると思いますか?

4

1 に答える 1

5

この方法で、bashスクリプトからログファイルにテキストを追加するだけです。

echo "My message" >> /my/custom/path/to/my_script.log

ローテーションはlogrotateによって処理されます。必要なのは、/ etc/logrotate.confの.confに設定を追加することだけです。構成は非常に自明であり、マニュアルページも非常に役立ちますが、要するに、毎週ローテーションして4週間分のログを圧縮形式で保持し、最後にローテーションするときに新しい空のログを作成する場合は、単純に.confに入れます:

/my/custom/path/to/my_script.log {
    rotate 4
    weekly
    create
    compress
    endscript
}

ログファイルの電子メール送信、ローテーションでのコマンドの実行、ファイルが特定のサイズに達したときにローテーションするなど、マニュアルページ(man logrotate)で確認できるオプションは他にもたくさんあります。

于 2012-09-25T21:36:31.787 に答える