著作一覧 |
Tomcatのcatalina.outをSystem.setOutで変えられるじゃんと考えてみて試してみたものの、どうもおかしい。よくよく考えてみればSystemクラスローダがロードしたSystem.outを変えられるわけではないので、あえなく撃沈。
で、しょうがないのでrotatelogsを使うことにする。
で、--helpしてみると、rotatelogs [-l] logname-(strftime strings) (interval [utf diff]| sizeM) となっているので、サイズが100Mとかになったら切り替えられるといいかなぁと、そっちを設定してみた。
| /usr/apache2/bin/rotatelogs -l foobar-%Y-%m-%d 1M
で、1Mで切り替えられるか試す。で、やたらとSystem.outに書きまくるJSPを作って試して、ふと気付くと単に foobar-2009-08-27 というどでかいファイルができている。(しかも-lが効いていないけど、これはバージョンがからむのかな)
なぜだろうといろいろ設定している例とかグーグルさんに訊いてみても、無いし。
期待したのは、1Mを越えたあたりでfoobar-2009-08-27.001とか002とかが作られることだったのだが。
で、いろいろためしていて、何気なくfoobar-%Y-%m-%d-%H-%M-%S とかやったら、ああ、そういうことかと納得したようなだまされたような。
結局、rotatelogsは、与えたファイル名のテンプレートが変化可能かつ与えた条件を満たすときにローテートする。
そのため、24時間相当の秒数を指定しても、最初の作成時点から24時間後ではなく、日付が変わった(%dが変化可能)ときにローテートする、と同じようにファイルサイズについても処理しているのだった。
秒をファイル名に持たれても扱いやすいとは思えないので、%Y-%m-%dまでのファイル名を使って24時間切り替え運用することに決定。
ジェズイットを見習え |