※基本的にRFC3164に準拠
確かにSyslogはパースしにくい、ならたとえばjsonで出してしまうというのはどうか。
こんなテンプレートになるかな。
template t_json {
template("\{\"unixtime\":\"$UNIXTIME\", \"facility\":\"$FACILITY\", \"priority\":\"$PRIORITY\", \"host\":\"$HOST\", \"msg\":\"$MSG\"\}\n");
template_escape(yes);
};
修正:この場合template_escapeはYesのほうがいい。
使ってみよう。destinationにtemplateを適用して、logを定義するだけだ。
filter f_all {level(debug..emerg);};
template t_json {
template("\{\"unixtime\":\"$UNIXTIME\", \"facility\":\"$FACILITY\", \"priority\":\"$PRIORITY\", \"host\":\"$HOST\", \"msg\":\"$MSG\"\}\n");
template_escape(yes);
};
destination d_json_file {
file("/var/log/sysjson.log" template(t_json));
};
log {
source(s_src);
filter(f_all);
destination(d_json_file);
};
※s_srcはubuntuパッケージ版のデフォルトソース
ログファイルにはこのように出力される。
{"unixtime":"1301974448", "facility":"syslog", "priority":"notice", "host":"prox01", "msg":"syslog-ng starting up; version='3.1.2'"}
おおお・・・さすがは (syslog)-"next generation"
0 件のコメント:
コメントを投稿