Class: CefLogger

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

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.facilityObject

Returns the value of attribute facility.



7
8
9
# File 'lib/cef_logger.rb', line 7

def facility
  @facility
end

.productObject

Returns the value of attribute product.



7
8
9
# File 'lib/cef_logger.rb', line 7

def product
  @product
end

.programObject

Returns the value of attribute program.



7
8
9
# File 'lib/cef_logger.rb', line 7

def program
  @program
end

.vendorObject

Returns the value of attribute vendor.



7
8
9
# File 'lib/cef_logger.rb', line 7

def vendor
  @vendor
end

.versionObject

Returns the value of attribute version.



7
8
9
# File 'lib/cef_logger.rb', line 7

def version
  @version
end

Class Method Details

.compile(data) ⇒ Object



45
46
47
48
49
50
51
52
53
54
# File 'lib/cef_logger.rb', line 45

def compile(data)
  case data
  when Hash
    data
      .map { |key, value| "#{key}=#{escape_value(value)}" }
      .join(' ')
  else
    raise "Can't compile non-hashes as extensions for CEF logging!"
  end
end

.escape_header(value) ⇒ Object



30
31
32
33
34
# File 'lib/cef_logger.rb', line 30

def escape_header(value)
  value
    .to_s
    .gsub('|', '\\|')
end

.escape_value(value) ⇒ Object



36
37
38
39
40
41
42
43
# File 'lib/cef_logger.rb', line 36

def escape_value(value)
  value
    .to_s
    .gsub('\\', '\\\\\\')
    .gsub('=', '\\=')
    .gsub("\n", '\n')
    .gsub("\r", '\r')
end

.log(name: '', severity: 0, data: {}) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/cef_logger.rb', line 9

def log(name: '', severity: 0, data: {})
  id =
    SecureRandom.uuid

  extension =
    compile data

  line = [
    'CEF:0',
    vendor,
    product,
    version,
    id,
    escape_header(name),
    severity,
    extension
  ].join('|')

  logger.info line
end

.loggerObject



56
57
58
# File 'lib/cef_logger.rb', line 56

def logger
  @logger ||= Syslog::Logger.new program, facility
end