- - PR -
catalina.out出力の行頭に時間情報を入れたいのですが
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-08-19 05:19
Redhat 9の環境で下記のようなことをしたいと思います。
Tomcatのアプリケーションで、catalina.shを書き換えて、ログ出力を | /usr/sbin/rotatelogs "$CATALINA_BASE"/logs/catalina.out.%Y%m%d 86400 540 & というような形でパイプでrotatelogsに渡して処理させています。 出力には下記のようなGCの情報が含まれているのですが、時間情報が付加されてません。 ==== 例:ここから ==== Desired survivor size 33554432 bytes, new threshold 31 (max 31) - age 1: 6163592 bytes, 6163592 total - age 2: 1453264 bytes, 7616856 total - age 3: 422824 bytes, 8039680 total - age 4: 5721352 bytes, 13761032 total ==== 例:ここまで ==== そこで、下記のようにawkを通して、時間情報を付加しようとしたのですが、失敗でした。 | awk '{ print "'`date +%R:%S`'" " "$0 }' | /usr/sbin/rotatelogs "$CATALINA_BASE"/logs/catalina.out.%Y%m%d 86400 540 & どういう失敗かと言うと、時間情報は付加されるが、最初の出力以降はログファイルに書き出されないというものです。 これは&の使い方の問題なので{}でawk処理とrotetelogsをまとめてしまえば良いかなと思いました。 しかしながらよく考えてみると、仮にそれで動いたとしても、今度はawkが起動された(というか最初にdateが実行された)時間しか行頭文字列には表示されないであろうことに気がつきました。 望みの処理をするプログラムをCで作る、Tomcatのアプリをいじるのという解決は手に余ります。で可能であればと思います。 Tomcatの設定変更または、ありもののコマンドを組み合わせたシェルスクリプトなどでのパイプ処理手法だけで、時間情報を付与しつつログに書き出させる良い方法はないものでしょうか? |
|
投稿日時: 2005-08-19 09:35
おはようございます。
ご希望の動作とは異なるかもしれませんが、djb の daemontools 付属の multilog であれば、 ・タイムスタンプの付加 ( ちょっとフォーマットは特殊です ) ・ローテート ( 時間ではなくログのファイルサイズが基準 ) を同時に行えます。ご参考まで。 |
|
投稿日時: 2005-08-24 12:32
情報、ありがとうございます。
deamontoolsの使用は今回は見送りました。 今度、機会があったら試してみようかと思います。 結論から言いますと、rotatelogsへパイプで出力する代わりにloggerにパイプで渡して、syslogdに処理を任すことで対処しました。 あまり、たいした結末ではありませんが、参考までに記録しておきます。 |
1