Windows ServerでのlogrotateをPowerShellで
Pocket

仕事で、Windows Serverのログ取得方式について関わる機会があったので備忘。

ログ取得方式はOSやローテーションさせるプログラムによって違いはあるんだけど、UNIX系は「logrotate」という、Linuxだと標準パッケージで事細かに設定できる。

20130817_01

図は一例だけど、こんな感じで過去のログファイル名に日付を入れた状態にして、日付ごとのログを保持したりできる(dateextオプションを/etc/logrotate.confに記述。デフォルトは数字)。当然、一定日数(図では31日間)前のログを自動的に削除させられるし、ログの切り替えを実行する時間、容量でログファイルの切り替えを行うことも可能。

Sponsored Links

ところが、Windowsは容量によるログ切り替え方式しか無い。つまり、常に指定された容量分のログだけを保持しているか、指定された容量に達したらログアーカイブとして別名で保持するかのどちらかである。

20130817_02

20130817_03

と、標準機能だけだと、ログの管理が面倒な仕様になっている。

そもそも、中の人たちはなんでローテーション方法が容量だけなのよ?と疑問に思わなかったんだろうか…

と愚痴っても仕方がない。

とにかく、このやり方ではログの管理がしづらい。そこで、PowerShellでなんとか日付ごとで管理できないかとおもった。

とりあえずまずググってみたら、いい感じのスクリプトを作成されている方を発見。

PowerShell I Love PowerShell
◆イベントログを抽出して保存する
http://mtgpowershell.blogspot.jp/2012/11/blog-post_9066.html

http://mtgpowershell.blogspot.jp/2012/11/blog-post_9066.html

おお、素晴らしい!
これを少しカスタマイズさせていただこう。感謝!!

とりあえず、ログ取得部分だけ作成。
そのうち、古いログ削除についてもスクリプト組まないと…

Pocket