Cygwin のログは Windows NT / 2000 系の場合
イベントログに出力され、普通の状態なら syslog サーバは必要ありません。
しかし、Linux / UNIX / ルータ / L3SW / L4SW などをもっていて、
別途 syslog でログを集めたいとなると別です。
そういう場合には syslog サーバはリモートにログを残す標準ですし必須です。
Cygwin の標準で準備されていないので ソース から make して作っちゃいましょう。
どうせ make するのですから、高機能なものにしましょう。
ってわけで白羽の矢が立ったのが syslog-ng です。
syslog-ng を標準の syslog サーバと比べると
- フィルタの機能が強力(自由に定義できる)
- 出力ファイルの状態も詳しく定義できる
- もちろんMB(マルチバイト=日本語)にも対応
- 当然、任意の文字コードに対応
- TCP での syslog 転送が出来る
なんて感じのメリットがあります。
これに対抗できるのは Windows 上では
Winsyslogぐらいで
かなりおすすめの syslog です。
まずは問答無用で syslog-ng のソースが必須です。
これがないと話が始まりません。
ただし、1.6.x 及び 1.9.x は make できませんでしたので、
以下のリンクから 1.4.x の syslog-ng 本体と 0.2.x のライブラリを取得してください。
このとき、ブラウザやサーバによっては gz の圧縮が解凍された、
tar パッケージになることがあるので、注意しておいてください。
http://www.balabit.com/downloads/syslog-ng/1.4/
http://www.balabit.com/downloads/libol/0.2/
ここでは、libol-0.2.24.tar.gz syslog-ng-1.4.17.tar.gz を
ダウンロードしたとして話を続けます。
# ちなみに 1.9.x は Glib を使うのですが、Glib を準備しても正常に make 出来ませんでした。
# 1.6.x は BIND を make してヘッダファイルまで準備したのですが正常に make できませんでした。
インストールが完了したら設定をしましょう。
まずは設定ファイルの準備からです。
以下のファイルを /etc/syslog-ng/syslog-ng.conf として配置してください。
設定のテンプレート用 syslog-ng.conf
その後は owner/group とパーミッションの設定です。
(以下のものは標準の設定より、より現実的なパーミッションです)
/var/log の内容(抜粋)
drwxrwxr-x+ 4 SYSTEM admins 4096 Feb 8 02:57 ./
drwxr-xr-x+ 11 admin admins 4096 Feb 8 02:11 ../
drwxrwxr-x+ 2 SYSTEM admins 0 Feb 8 02:13 syslog-ng/
'ls -l' で表示される属性の一番右に "+" がついているのは
owner / group / other の rwx で表示できる以外のアクセス権が
ついていることを示していて、大雑把にいうと
NTFS 上のアクセス権設定で SYSTEM アカウントに
アクセス権 (フルコントロール) がついているということです。
ですので、まずは上記のディレクトリ配下に相当する
Windows 上のフォルダに対して、NTFS で SYSTEM ユーザに
フルコントロールのアクセス権を設定します。
その後、chown chmod で上記のようなアクセス権設定としましょう。
おそらく以上で起動できるようになると思います。
動作が確認できたら、Web 等で記述方法を読みながら
/etc/syslog-ng/syslog-ng.conf を改めて設定しましょう。
配布したままの設定では
任意のホストから送られたsyslogすべてを受信します。
そのままの設定でホストが Internet などで公開されてると、
悲しい目を見る可能性があります。
配布している syslog-ng.conf には実際に使用する際の情報源を
いっぱい引用しているので参考にして正しく設定してください。
ちなみに、Cygwinは内部で発生する syslog はイベントログに書き込むように
なっており、変更はできません(方法を知りません)。
ですから、
source stdlog { unix-stream("/dev/log"); };
なんて事をしてはいけません。