nexus_semantic_logger 1.0.2 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
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