我很新玩syslog。Ruby&Syslog&自定義設施
我們決定使用syslog來跟蹤Rails應用程序中的一些特殊事件。
問題是我不想使用默認的/var/log/system.log
文件,而是使用像/var/log/myapp_events.log
這樣的自定義文件。
我看到了,我必須定義自己的工廠在/etc/syslog.conf
這樣的:
myapp_events.* /var/log/myapp_events.log
重啓syslogd的我看到,我可以用它直接播放到的bash控制檯後
syslog -s -k Facility myapp_events Message "this is my message"
如預期的那樣,消息出現在/var/log/myapp_events.log
中,但我無法使用syslog ruby gem重現此行爲。我曾嘗試:
require 'syslog'
Syslog.open('myapp_events', Syslog::LOG_PID | Syslog::LOG_CONS) { |s| s.warning 'this is my message' } # sends the message to system.log
Syslog.open('myapp_events', Syslog::LOG_PID | Syslog::LOG_CONS, 'myapp_events') { |s| s.warning 'this is my message' } # error because 'myapp_event' can't be converted to int.
我看到Syslog.open
有第三個參數也就是設施,但它必須是一個整數,我已經是一個字符串。
什麼建議嗎?
我看到ruby'syslog' gem使用'syslog' C實現,這個C函數只接受整數作爲** facility ** value:http://www.gnu.org/s/libc/ manual/html_node/syslog_003b-vsyslog.html#syslog_003b-vsyslog – fguillen 2010-10-28 14:19:08