Class: SysLogger::Formatter::RFC5424
- Inherits:
-
Logger::Formatter
- Object
- Logger::Formatter
- SysLogger::Formatter::RFC5424
- Defined in:
- lib/syslogger/formatter/rfc5424.rb
Constant Summary collapse
- Format =
"<%s>1 %s %s %s %s %s %s %s\n"
- FACILITIES =
{ :kern => 0, :user => 1, :mail => 2, :daemon => 3, :auth => 4, :syslog => 5, :lpr => 6, :news => 7, :uucp => 8, :cron => 9, :authpriv => 10, :ftp => 11, :ntp => 12, :audit => 13, :alert => 14, :at => 15, :local0 => 16, :local1 => 17, :local2 => 18, :local3 => 19, :local4 => 20, :local5 => 21, :local6 => 22, :local7 => 23 }
- SEVERITIES =
{ :emerg => 0, :alert => 1, :crit => 2, :fatal => 2, :err => 3, :error => 3, :warn => 4, :notice => 5, :info => 6, :debug => 7 }
Instance Attribute Summary collapse
-
#appname ⇒ Object
readonly
Returns the value of attribute appname.
-
#msgid ⇒ Object
readonly
Returns the value of attribute msgid.
-
#procid ⇒ Object
readonly
Returns the value of attribute procid.
Instance Method Summary collapse
- #call(severity, datetime, progname, message) ⇒ Object
- #facility ⇒ Object
- #facility=(f) ⇒ Object
-
#initialize(appname = nil, procid = nil, msgid = nil, facility = nil) ⇒ RFC5424
constructor
A new instance of RFC5424.
Constructor Details
#initialize(appname = nil, procid = nil, msgid = nil, facility = nil) ⇒ RFC5424
Returns a new instance of RFC5424.
48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/syslogger/formatter/rfc5424.rb', line 48 def initialize(appname = nil, procid = nil, msgid = nil, facility = nil) super() @counter = 0 @hostname = Socket.gethostname @msgid = format_field(msgid, 32) @procid = procid @procid = format_field(procid || Process.pid.to_s, 128) @appname = format_field(appname, 48) self.facility = facility || :local7 end |
Instance Attribute Details
#appname ⇒ Object (readonly)
Returns the value of attribute appname.
4 5 6 |
# File 'lib/syslogger/formatter/rfc5424.rb', line 4 def appname @appname end |
#msgid ⇒ Object (readonly)
Returns the value of attribute msgid.
4 5 6 |
# File 'lib/syslogger/formatter/rfc5424.rb', line 4 def msgid @msgid end |
#procid ⇒ Object (readonly)
Returns the value of attribute procid.
4 5 6 |
# File 'lib/syslogger/formatter/rfc5424.rb', line 4 def procid @procid end |
Instance Method Details
#call(severity, datetime, progname, message) ⇒ Object
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/syslogger/formatter/rfc5424.rb', line 70 def call(severity, datetime, progname, ) severity = SEVERITIES[severity.to_s.downcase.to_sym] || SEVERITIES[:info] pri = (facility << 3) | severity # Since we're using RFC5424 format, it makes more sense to use the # passed in progname as the msgid rather than changing the appname when # a block was received to generate the message. = progname.nil? ? msgid : format_field(progname, 32) @counter = (@counter + 1) % 65536 structured_data = { "meta" => { "x-group" => rand(99999999), "x-counter" => @counter } } sd = format_sdata(structured_data) lines = msg2str().split(/\r?\n/).reject(&:empty?).map do |line| Format % [pri, datetime.strftime("%FT%T.%6N%:z"), @hostname, @appname, format_field(@procid || Process.pid.to_s, 128), , sd, line] end lines.join end |
#facility ⇒ Object
62 63 64 |
# File 'lib/syslogger/formatter/rfc5424.rb', line 62 def facility @facility end |
#facility=(f) ⇒ Object
66 67 68 |
# File 'lib/syslogger/formatter/rfc5424.rb', line 66 def facility=(f) @facility = FACILITIES[f.to_s.downcase.to_sym] || @facility end |