event-logger 0.0.5 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ea2137e6df18f6ec102e72dfa4e764a3c0d08435
4
- data.tar.gz: e688dc32cc1b81131dc1627544704cf51b097798
3
+ metadata.gz: 93809936e32dfda51c067929a84ae6ac1f57a7ee
4
+ data.tar.gz: 8a13f477f1b83ac42e52f89cba01a629a0d6f933
5
5
  SHA512:
6
- metadata.gz: 3b52dbfde6ea162128c8a8fd98cb823be1f2f55a7fe61b586fd0ee0890d8c070984e2b71b020958206a6e2c8f20492adba5c169eddbe62a6f95bc6f919312fef
7
- data.tar.gz: df0c9a7010a3707a8816ce7903b40955761667c0c19227c5f350c0dfcc0c833e5939364e501932b4ae22bc5fe66852e59db80efd76fd1e96c506db04b648993e
6
+ metadata.gz: b7858efff3d3c45975f0f2ae4c922a7f0f9e86a25332a0ef2a94c27ee877a6ef461712a462da3992514cfe8dda61f1114abeb244f32724b4173a3c8cedf15997
7
+ data.tar.gz: 8070c88f5ed60ce2131a9b84cd9e5709e3da832ea4e238355a6237f9710ae8337900e148f51be65a43c5798625f3839dd46b40b4ec52efdadc880e1a8079bd7a
@@ -0,0 +1 @@
1
+ require 'event_logger'
@@ -1,18 +1,18 @@
1
1
  require 'singleton'
2
- require 'logger'
3
- require 'uuidtools'
4
- require 'json'
2
+ require 'securerandom'
3
+
4
+ require_relative 'event_logger/config'
5
5
 
6
6
  # Event logger based on:
7
7
  # https://blog.logentries.com/2015/07/ditch-the-debugger-and-use-log-analysis-instead/
8
8
  class EventLogger
9
- attr_accessor :logger
9
+ attr_reader :config
10
10
  attr_accessor :mapping
11
11
 
12
12
  include Singleton
13
13
 
14
14
  def initialize
15
- @logger = Logger.new(STDOUT)
15
+ @config = Config.new
16
16
  @mapping = nil
17
17
  end
18
18
 
@@ -26,13 +26,16 @@ class EventLogger
26
26
  elsif @mapping && @mapping.key?(details[:name])
27
27
  @mapping[details[:name]][:severity]
28
28
  else
29
- 'info'
30
- end
31
- @logger.send(severity, format_log_entry(details_for(type, details)))
29
+ :info
30
+ end.to_sym
31
+
32
+ config.logger_instance.write severity, details_for(type, details)
33
+
34
+ nil
32
35
  end
33
36
 
34
37
  def create_correlation_id
35
- UUIDTools::UUID.random_create.to_s
38
+ SecureRandom.uuid
36
39
  end
37
40
 
38
41
  private
@@ -40,8 +43,4 @@ class EventLogger
40
43
  def details_for(type, details)
41
44
  { type: type }.merge(details)
42
45
  end
43
-
44
- def format_log_entry(details = {})
45
- JSON.generate(details)
46
- end
47
46
  end
@@ -0,0 +1,34 @@
1
+ require 'logger'
2
+
3
+ require 'event_logger/output/io'
4
+ require 'event_logger/output/logger'
5
+
6
+ class EventLogger
7
+ class Config
8
+ attr_reader :logger
9
+
10
+ def initialize
11
+ self.logger = ENV.fetch('EVENT_LOGGER_LOGGER', :logger).to_sym
12
+ end
13
+
14
+ def logger=(value)
15
+ if value.is_a?(Symbol) && !%i[logger stdout].include?(value)
16
+ raise ArgumentError, "Unknown logger type: #{value}"
17
+ end
18
+
19
+ @logger = value
20
+ end
21
+
22
+ def logger_instance
23
+ if logger == :logger
24
+ EventLogger::Output::Logger.new(Logger.new(STDOUT))
25
+ elsif logger == :stdout
26
+ EventLogger::Output::IO.new($stdout)
27
+ elsif logger.respond_to?(:<<)
28
+ EventLogger::Output::IO.new(logger)
29
+ else
30
+ EventLogger::Output::Logger.new(logger)
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,23 @@
1
+ require 'json'
2
+
3
+ # Outputs log entries to an IO stream, one JSON hash per entry.
4
+ #
5
+ # Adds `generated_at` and `severity` fields to the hash with the current
6
+ # timestamp in milliseconds and the entry severity.
7
+ class EventLogger
8
+ module Output
9
+ class IO
10
+ attr_reader :stream
11
+
12
+ def initialize(stream)
13
+ @stream = stream
14
+ end
15
+
16
+ def write(severity, details = {})
17
+ timestamp = (Time.now.to_f * 1000).to_i
18
+ line = JSON.generate({ generated_at: timestamp, severity: severity }.merge(details))
19
+ @stream << "#{line}\n"
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,21 @@
1
+ require 'json'
2
+
3
+ # Outputs log entries to a Logger object, one JSON hash per entry.
4
+ #
5
+ # Can be used with the Ruby Logger or another that responds to per-severity
6
+ # methods.
7
+ class EventLogger
8
+ module Output
9
+ class Logger
10
+ attr_reader :logger
11
+
12
+ def initialize(logger)
13
+ @logger = logger
14
+ end
15
+
16
+ def write(severity, details = {})
17
+ @logger.public_send(severity, JSON.generate(details))
18
+ end
19
+ end
20
+ end
21
+ end
metadata CHANGED
@@ -1,38 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: event-logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Honeycomb
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-05-30 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: uuidtools
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
11
+ date: 2017-08-08 00:00:00.000000000 Z
12
+ dependencies: []
27
13
  description: Consistent Event Logging
28
14
  email: developers@honeycomb.tv
29
15
  executables: []
30
16
  extensions: []
31
17
  extra_rdoc_files: []
32
18
  files:
19
+ - lib/event-logger.rb
33
20
  - lib/event_logger.rb
34
- homepage:
35
- licenses: []
21
+ - lib/event_logger/config.rb
22
+ - lib/event_logger/output/io.rb
23
+ - lib/event_logger/output/logger.rb
24
+ homepage: https://github.com/honeycomb-tv/event-logger
25
+ licenses:
26
+ - BSD-2-Clause
36
27
  metadata: {}
37
28
  post_install_message:
38
29
  rdoc_options: []