event_tracer 0.1.0 → 0.1.1

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: 0c3405136a8481cab1e0af88ad64f86362caa41a
4
- data.tar.gz: 2ea5ddc4c86f075b15f13a568c0ceebd13fd3be5
3
+ metadata.gz: e56b2ea7016745d2ba377a333e9519ef5ee67cfe
4
+ data.tar.gz: d50a901de9514382b3d51f474c1c424c4cfa86f8
5
5
  SHA512:
6
- metadata.gz: d1dc0e74037f877d946130b76a9ac6c336f1174601fb6263494341c26298547ca39e6aa0ca48109a107d88412cec8e4cf46408de2f4d7c1dd8cd400e0533b7b5
7
- data.tar.gz: 96341db4a9e6967a573d9aa4a0147d55357f5db20630785aff5de44491d129136a157f8ece4939b24e10dd0ce992696e489cdb93e364c391587f4b54251e23e9
6
+ metadata.gz: a49cc7f8647c7a6ca1b5949179e452b7df5bb0b22bdc6efe4d9a753907acbe813eb2a60bb7eaaa45a0a9649d808c2e5e950d841f2e1be0047b06cfcf171d8d96
7
+ data.tar.gz: 75de1c117e50cb645f733500c8d5324e93c5012cf0fd0dd4bbb0817683f6ac5e803258888477e0f3050a21304cc29cd7fe11830fb771203d755650c5b8744859
data/lib/event_tracer.rb CHANGED
@@ -1,4 +1,5 @@
1
- require "event_tracer/version"
1
+ require 'event_tracer/version'
2
+ require 'event_tracer/log_result'
2
3
 
3
4
  module EventTracer
4
5
 
@@ -16,30 +17,68 @@ module EventTracer
16
17
 
17
18
  LOG_TYPES.each do |log_type|
18
19
  define_singleton_method log_type do |loggers: nil, **args|
19
- begin
20
- (selected_loggers(loggers) || @loggers).each do |_code, logger|
21
- logger.send(log_type, **args)
22
- end
23
- true
24
- rescue Exception => e
25
- p e.message
26
- false
27
- end
20
+ send_log_messages(
21
+ log_type,
22
+ (selected_loggers(loggers) || @loggers),
23
+ args
24
+ )
28
25
  end
29
26
  end
30
27
 
31
28
  private
32
29
 
30
+ def self.send_log_messages(log_type, loggers, args)
31
+ result = Result.new
32
+
33
+ loggers.each do |code, logger|
34
+ begin
35
+ if args[:action] && args[:message]
36
+ result.record code, logger.send(log_type, filtered_log_arguments(code, args))
37
+ else
38
+ result.record code, LogResult.new(false, 'Fields action & message need to be populated')
39
+ end
40
+ rescue Exception => e
41
+ result.record code, LogResult.new(false, e.message)
42
+ end
43
+ end
44
+
45
+ result
46
+ end
47
+
33
48
  def self.selected_loggers(logger_codes)
34
49
  return unless logger_codes.is_a?(Array)
35
50
  return if logger_codes.detect { |code| !code.is_a?(Symbol) }
36
51
 
37
- selected_codes = logger_codes.uniq & @loggers.keys
52
+ selected_codes = logger_codes.uniq & registered_logger_codes
38
53
 
39
54
  return if selected_codes.empty?
40
55
  @loggers.select { |code, _logger| selected_codes.include?(code) }
41
56
  end
42
57
 
58
+ def self.filtered_log_arguments(logger_code, args)
59
+ blacklisted_logger_keys = registered_logger_codes - [logger_code]
60
+
61
+ args.reject do |key, _value|
62
+ blacklisted_logger_keys.include?(key)
63
+ end
64
+ end
65
+
66
+ def self.registered_logger_codes
67
+ @loggers.keys
68
+ end
69
+
70
+ class Result
71
+ attr_reader :records
72
+
73
+ def initialize
74
+ @records = {}
75
+ end
76
+
77
+ def record(logger_code, outcome)
78
+ records[logger_code] = outcome
79
+ end
80
+ end
81
+
43
82
  end
44
83
 
45
84
  project_root = File.dirname(File.absolute_path(__FILE__))
@@ -14,11 +14,16 @@ module EventTracer
14
14
 
15
15
  LOG_TYPES.each do |log_type|
16
16
  define_method log_type do |**args|
17
- SUPPORTED_METRICS.each do |metric|
18
- next unless args[:appsignal] && args[:appsignal][metric].is_a?(Hash)
19
- send_metric(metric, args[:appsignal][metric]) unless args[:appsignal][metric].empty?
17
+ return LogResult.new(false, "Invalid appsignal config") unless args[:appsignal] && args[:appsignal].is_a?(Hash)
18
+
19
+ applied_metrics(args[:appsignal]).each do |metric|
20
+ metric_args = args[:appsignal][metric]
21
+ return LogResult.new(false, "Appsignal metric #{metric} invalid") unless metric_args && metric_args.is_a?(Hash)
22
+
23
+ send_metric metric, metric_args
20
24
  end
21
- true
25
+
26
+ LogResult.new(true)
22
27
  end
23
28
  end
24
29
 
@@ -27,6 +32,10 @@ module EventTracer
27
32
  attr_reader :appsignal, :decoratee
28
33
  alias_method :appsignal, :decoratee
29
34
 
35
+ def applied_metrics(appsignal_args)
36
+ appsignal_args.keys.select { |metric| SUPPORTED_METRICS.include?(metric) }
37
+ end
38
+
30
39
  def send_metric(metric, payload)
31
40
  payload.each do |increment, value|
32
41
  appsignal.send(metric, increment, value)
@@ -9,6 +9,7 @@ module EventTracer
9
9
  LOG_TYPES.each do |log_type|
10
10
  define_method log_type do |*args|
11
11
  send_message(log_type, *args)
12
+ LogResult.new(true)
12
13
  end
13
14
  end
14
15
 
@@ -17,11 +18,9 @@ module EventTracer
17
18
  attr_reader :logger, :decoratee
18
19
  alias_method :logger, :decoratee
19
20
 
20
- # execute only if there's a message to be logged
21
- def send_message(log_method, action: nil, simple_message: nil, **args)
22
- return false unless simple_message || args[:message]
23
- message_to_send = simple_message ? simple_message : args.to_json
24
- logger.send(log_method, "[#{action}] #{message_to_send}")
21
+ # EventTracer ensures action & message is always populated
22
+ def send_message(log_method, action:, message:, **args)
23
+ logger.send(log_method, "[#{action}] #{message} #{args.to_json}")
25
24
  end
26
25
 
27
26
  end
@@ -0,0 +1,4 @@
1
+ module EventTracer
2
+ class LogResult < Struct.new(:success?, :error)
3
+ end
4
+ end
@@ -1,3 +1,3 @@
1
1
  module EventTracer
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: event_tracer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - melvrickgoh
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-01-07 00:00:00.000000000 Z
11
+ date: 2019-01-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -64,6 +64,7 @@ files:
64
64
  - lib/event_tracer/appsignal_logger.rb
65
65
  - lib/event_tracer/base_logger.rb
66
66
  - lib/event_tracer/basic_decorator.rb
67
+ - lib/event_tracer/log_result.rb
67
68
  - lib/event_tracer/version.rb
68
69
  homepage: https://github.com/melvrickgoh/event_tracer
69
70
  licenses: