Module: Legion::Logging::Shipper::FileTransport

Defined in:
lib/legion/logging/shipper/file_transport.rb

Constant Summary collapse

DEFAULT_PATH =
'/var/log/legion/siem.log'

Class Method Summary collapse

Class Method Details

.ship(event) ⇒ Object



13
14
15
# File 'lib/legion/logging/shipper/file_transport.rb', line 13

def ship(event)
  ship_batch([event])
end

.ship_batch(events) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/legion/logging/shipper/file_transport.rb', line 17

def ship_batch(events)
  batch = Array(events)
  return true if batch.empty?

  path = resolve_path
  FileUtils.mkdir_p(File.dirname(path))
  File.open(path, 'a') do |f|
    f.write(batch.map { |event| ::JSON.generate(event) }.join("\n"))
    f.write("\n")
  end
  true
rescue StandardError => e
  Legion::Logging.error("FileTransport ship failed: #{e.message}") if defined?(Legion::Logging)
  false
end