Class: RemoteSyslog::MessageGenerator

Inherits:
Object
  • Object
show all
Defined in:
lib/remote_syslog/message_generator.rb

Constant Summary collapse

COLORED_REGEXP =
/\e\[(?:(?:[0-9]{1,3});){0,2}(?:[0-9]{1,3})m/

Instance Method Summary collapse

Constructor Details

#initialize(socket, options = {}) ⇒ MessageGenerator

Returns a new instance of MessageGenerator.



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/remote_syslog/message_generator.rb', line 8

def initialize(socket, options = {})
  @socket = socket

  @parse_fields     = options[:parse_fields]
  @strip_color      = options[:strip_color]
  @exclude_pattern  = options[:exclude_pattern]
  @prepend          = options[:prepend]
  @max_message_size = options[:max_message_size] || 1024

  @packet = SyslogProtocol::Packet.new

  if options[:hostname] && options[:hostname] != ''
    local_hostname = options[:hostname]
  else
    local_hostname = (Socket.gethostname rescue `hostname`.chomp)[/^([^\.]+)/, 1]

    if local_hostname.nil? || local_hostname == ''
      local_hostname = 'localhost'
    end
  end

  @packet.hostname = local_hostname
  @packet.facility = options[:facility] || 'user'
  @packet.severity = options[:severity] || 'notice'
end

Instance Method Details

#transmit(tag, message) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/remote_syslog/message_generator.rb', line 34

def transmit(tag, message)
  return if @exclude_pattern && message =~ @exclude_pattern

  message = message.gsub(COLORED_REGEXP, '') if @strip_color
  message = @prepend + message if @prepend

  packet = @packet.dup
  packet.content = message

  if @parse_fields && message =~ @parse_fields
    packet.hostname = $2 if $2 && $2 != ''
    tag             = $3 if $3 && $3 != ''
    packet.content  = $4 if $4 && $4 != ''

    if tag
      packet.tag = tag.gsub(%r{[: \]\[\\]+}, '-')
    end
  end

  unless packet.tag
    packet.tag = tag
  end

  @socket.write(packet.assemble(@max_message_size))
end