nexus_semantic_logger 1.0.2 → 1.1.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
  SHA256:
3
- metadata.gz: 4f41cfcb762aa97a9c9e03abe6ec14570b5a9a90121c0df24b620105541be5c6
4
- data.tar.gz: b9eb8d732937fa6ee5dcf6a64a616dbdb2e4800b734156db001807cde9735c7a
3
+ metadata.gz: 2f12150f394b0f2c56570a19a1979c3f8cf0f58f3c622d6d2886ed6925041825
4
+ data.tar.gz: 7fc2853cb92631be96b8bc17f07d97eff6057091170704d28ef0280b673ac370
5
5
  SHA512:
6
- metadata.gz: 6505a0e3c84b133a8bb2fc3151959645dbf536977c5b6eb224d99f42c77066923c59e1f4d860f09f362b3b025e9d2cf97e5e1eb22cc8014230a3d8abd2d2144c
7
- data.tar.gz: e1ff91e0a80205c43b3b5f32c296d122ab77ec40a9a7541d85bcb9421762006cdb2050cd8b937b9341e32ec07ecd9accfae74a3de68d8507e52bf8535024c754
6
+ metadata.gz: dd9b6db086b0b1bb5f8cb760577d87a8603ae892aeeb8e01249081911f3b83068e96357ad0c13a8fa184e96a63efb9f55241bbcc1baa7aa4e513021dd713689b
7
+ data.tar.gz: '084c137b346270f171132a5de282a3a2019be85fe5a83de3677cedf26290f6f7b1ced55c2ede9cbd57afe9daa6ed9d5d58ddf60ce5e7954d6e3b937753302e30'
data/.rubocop.yml CHANGED
@@ -1,6 +1,10 @@
1
1
  inherit_gem:
2
2
  rubocop-shopify: rubocop.yml
3
3
 
4
+ Style/ClassVars:
5
+ Enabled: false
6
+ Style/ConditionalAssignment:
7
+ Enabled: false
4
8
  Style/GlobalVars:
5
9
  Enabled: false
6
10
  Style/FrozenStringLiteralComment:
@@ -0,0 +1,77 @@
1
+ # frozen_string_literal: true
2
+ require 'rails_semantic_logger'
3
+
4
+ module NexusSemanticLogger
5
+ class AppenderFilter
6
+ def self.filter_lambda
7
+ -> (log) {
8
+ # log API see https://logger.rocketjob.io/log_struct.html
9
+ # and lib/semantic_logger/levels.rb
10
+ # level: :trace=>0, :debug=>1, :info=>2, :warn=>3, :error=>4, :fatal=>5
11
+ current_log_level = SemanticLogger::Levels.index(env_names_default_level)
12
+
13
+ # Names allow overriding the level that will be appended,
14
+ # else the global level is used to determine appending.
15
+ append = false
16
+ if log.name.in?(env_names_trace)
17
+ append = true
18
+ elsif log.name.in?(env_names_debug)
19
+ append = log.level_index >= 1
20
+ elsif log.name.in?(env_names_info)
21
+ append = log.level_index >= 2
22
+ elsif log.name.in?(env_names_warn)
23
+ append = log.level_index >= 3
24
+ elsif log.name.in?(env_names_error)
25
+ append = log.level_index >= 4
26
+ elsif log.name.in?(env_names_fatal)
27
+ append = log.level_index >= 5
28
+ else
29
+ append = log.level_index >= current_log_level
30
+ end
31
+ append
32
+ }
33
+ end
34
+
35
+ def self.env_names_default_level
36
+ @@names_default_level ||= ENV.fetch('LOG_NAMES_DEFAULT_LEVEL', Rails.application.config.log_level)
37
+ end
38
+
39
+ def self.env_names_trace
40
+ @@names_trace ||= fetch_env_names('LOG_NAMES_TRACE')
41
+ end
42
+
43
+ def self.env_names_debug
44
+ @@names_debug ||= fetch_env_names('LOG_NAMES_DEBUG')
45
+ end
46
+
47
+ def self.env_names_info
48
+ @@names_info ||= fetch_env_names('LOG_NAMES_INFO')
49
+ end
50
+
51
+ def self.env_names_warn
52
+ @@names_warn ||= fetch_env_names('LOG_NAMES_WARN')
53
+ end
54
+
55
+ def self.env_names_error
56
+ @@names_error ||= fetch_env_names('LOG_NAMES_ERROR')
57
+ end
58
+
59
+ def self.env_names_fatal
60
+ @@names_fatal ||= fetch_env_names('LOG_NAMES_FATAL')
61
+ end
62
+
63
+ def self.flush
64
+ @@names_default_level = nil
65
+ @@names_trace = nil
66
+ @@names_debug = nil
67
+ @@names_info = nil
68
+ @@names_warn = nil
69
+ @@names_error = nil
70
+ @@names_fatal = nil
71
+ end
72
+
73
+ def self.fetch_env_names(var)
74
+ ENV.fetch(var, '').split(',').to_set
75
+ end
76
+ end
77
+ end
@@ -33,7 +33,8 @@ module NexusSemanticLogger
33
33
  # Default logging is stdout in datadog compatible JSON.
34
34
  config.rails_semantic_logger.format = NexusSemanticLogger::DatadogFormatter.new(service)
35
35
  config.rails_semantic_logger.add_file_appender = false
36
- config.semantic_logger.add_appender(io: $stdout, formatter: config.rails_semantic_logger.format)
36
+ dd_appender = config.semantic_logger.add_appender(io: $stdout, formatter: config.rails_semantic_logger.format)
37
+ dd_appender.filter = NexusSemanticLogger::AppenderFilter.filter_lambda
37
38
 
38
39
  logger.info('SemanticLogger initialised.', level: config.log_level)
39
40
  end
@@ -44,13 +45,19 @@ module NexusSemanticLogger
44
45
 
45
46
  # Change default logging to coloured logging on stdout.
46
47
  config.semantic_logger.clear_appenders!
47
- config.semantic_logger.add_appender(io: $stdout, formatter: :color)
48
+ color_appender = config.semantic_logger.add_appender(io: $stdout, formatter: :color)
49
+ color_appender.filter = NexusSemanticLogger::AppenderFilter.filter_lambda
50
+
48
51
  if ENV['DD_AGENT_HOST'].present? && ENV['DD_AGENT_PORT'].present?
49
52
  # Development logs can be sent to datadog via a TCP logging endpoint on a local agent.
50
53
  # Each port is assigned a particular service.
51
54
  # See https://logger.rocketjob.io/appenders.html
52
- config.semantic_logger.add_appender(appender: :tcp, server: "#{ENV['DD_AGENT_HOST']}:#{ENV['DD_AGENT_PORT']}",
53
- formatter: config.rails_semantic_logger.format)
55
+ dd_appender = config.semantic_logger.add_appender(
56
+ appender: :tcp,
57
+ server: "#{ENV['DD_AGENT_HOST']}:#{ENV['DD_AGENT_PORT']}",
58
+ formatter: config.rails_semantic_logger.format
59
+ )
60
+ dd_appender.filter = NexusSemanticLogger::AppenderFilter.filter_lambda
54
61
  end
55
62
 
56
63
  logger.info('SemanticLogger initialised in development.', level: config.log_level)
@@ -59,7 +66,8 @@ module NexusSemanticLogger
59
66
  def self.test(config)
60
67
  # Use human readable coloured output for logs when running tests.
61
68
  config.semantic_logger.clear_appenders!
62
- config.semantic_logger.add_appender(io: $stdout, formatter: :color)
69
+ color_appender = config.semantic_logger.add_appender(io: $stdout, formatter: :color)
70
+ color_appender.filter = NexusSemanticLogger::AppenderFilter.filter_lambda
63
71
  end
64
72
  end
65
73
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
  module NexusSemanticLogger
3
- # Leave this as 1.0.2 in order for CI process to replace with the tagged version.
4
- VERSION = '1.0.2'
3
+ # Leave this as 1.1.0 in order for CI process to replace with the tagged version.
4
+ VERSION = '1.1.0'
5
5
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+ require 'nexus_semantic_logger/appender_filter'
2
3
  require 'nexus_semantic_logger/application'
3
4
  require 'nexus_semantic_logger/datadog_formatter'
4
5
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nexus_semantic_logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Johnathon Harris
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-07-05 00:00:00.000000000 Z
11
+ date: 2022-07-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: amazing_print
@@ -63,6 +63,7 @@ files:
63
63
  - Gemfile
64
64
  - README.md
65
65
  - lib/nexus_semantic_logger.rb
66
+ - lib/nexus_semantic_logger/appender_filter.rb
66
67
  - lib/nexus_semantic_logger/application.rb
67
68
  - lib/nexus_semantic_logger/datadog_formatter.rb
68
69
  - lib/nexus_semantic_logger/version.rb