Node.js プログラムから rsyslog にログ出力

先般仕事で、EC2 インスタンスで稼動させる常駐プログラムを Node.js で書いてまして、ログの類を syslog 出力するのに少し手間取ったので備忘録を。

なんかモジュールがあんだろー、と npm registry で syslog をキーワードに探したら、まんま syslog というモジュールが見つかったので、早速入手して使ってみたけどどーも出力されてる気配が無い。はて? と Readme をよく読んだら syslog-ng 対応となってますな。EC2 の Linux 標準 AMI は Redhat 系なので、syslog システムは rsyslog なんですよね。syslog-ng は syslogd と互換性が無いらしいし、そのせいかな? とよく分からないまま(ヲイw)これを諦め別のモジュールをごそごそと。rsyslog 用と謳ったものは見つけられませんでしたが、POSIX 準拠のシステムコールを用途とした posix ってモジュールがあって、そいつが使えそうです。以下、syslog 出力例です。

var posix = require('posix');

posix.openlog(process.argv[1], {cons: true, ndelay: true, pid: true}, 'user');
posix.syslog('info', '日本語でも大丈夫よーん');
posix.closelog();

はい、/var/log/messages への出力が確認できました。以上!!