google_logger 1.0.2 → 1.2.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: 51a89c8354ab6973e899f1d06f12af447b896610e6acc41a4d00b78fafbce979
4
- data.tar.gz: de685bd286d977dfc8af3699a792cdaf50e9e89cd0080cddd74c3c9fdd66a8cd
3
+ metadata.gz: 0b63f1300144826557fc796374cf5dcd15f608a7ba2044f68d011bbac2b01f88
4
+ data.tar.gz: cdef99457af4f3bc04c0c1f666f6014736e120d365a6c1d26560d0c5dacb9c1f
5
5
  SHA512:
6
- metadata.gz: 9e15bd07b973746f68551cdcf3cdf72cd83da2ed90c3e9742732467370a31c99e8e50f29fb09eddd385d133cebe412c3228e940b008116a6817b8f93c6f317df
7
- data.tar.gz: 64946691763b5b908c0b02cd05a2c02151db6b96b32ac615addfa3a05fcf21e02f6ce7aab25b76dcf9b36530f868d12481f9f89d188d9dad8ef6722afed196f8
6
+ metadata.gz: 4cd40975a4e1aaa7accbcab858f63176b8edc345214b3a9292af2f244baa42f1e731838d7400a7505bfdce2d4950d5ec3852645ee453fdb4efb13d8c3d66c124
7
+ data.tar.gz: a8b3b972f21cfb69365b54c186e1135c3b35eb5725f2f00d70b6021df8c40f6b103409d491da9a9fca53bb402914ae5dcd6cb60b059c5df8abc405590aaa4147
@@ -12,6 +12,7 @@ module GoogleLogger
12
12
  credentials
13
13
  log_locally
14
14
  local_logger
15
+ backtrace_length
15
16
  ])
16
17
 
17
18
  # Creates a new instance with default configuration values
@@ -22,6 +23,7 @@ module GoogleLogger
22
23
  @secret_params = %i[password]
23
24
  @secret_param_value = '<SECRET_PARAM>'
24
25
  @log_locally = false
26
+ @backtrace_length = 10
25
27
  end
26
28
 
27
29
  def validate!
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'logger'
4
+
5
+ module GoogleLogger
6
+ class JsonLogger < ::Logger
7
+ SEVERITY_MAPPING = {
8
+ UNKNOWN => :DEFAULT,
9
+ FATAL => :CRITICAL,
10
+ ERROR => :ERROR,
11
+ WARN => :WARNING,
12
+ INFO => :INFO,
13
+ DEBUG => :DEBUG
14
+ }.freeze
15
+
16
+ def initialize(default_log_name: 'default')
17
+ @default_log_name = default_log_name
18
+ @tagged = nil
19
+ self.level = DEBUG
20
+ end
21
+
22
+ private
23
+
24
+ #
25
+ # @see Logger#add
26
+ #
27
+ def add(severity, message = nil, progname = nil)
28
+ return true if message.blank? && progname.blank?
29
+
30
+ severity ||= UNKNOWN
31
+ return true if severity < level
32
+
33
+ create_formatted_log(severity, message, progname)
34
+ end
35
+
36
+ def create_formatted_log(severity, message = nil, progname = nil)
37
+ log_name = tagged? ? formatter.current_tags.join('.') : @default_log_name
38
+ GoogleLogger.create_entry(
39
+ message || progname,
40
+ log_name: log_name,
41
+ severity: SEVERITY_MAPPING.fetch(severity)
42
+ )
43
+ end
44
+
45
+ def tagged?
46
+ formatter.respond_to?(:current_tags) && formatter.current_tags.any?
47
+ end
48
+ end
49
+ end
@@ -26,7 +26,9 @@ module GoogleLogger
26
26
  end
27
27
 
28
28
  class << self
29
- delegate :deep_replace_secret_params, to: :new
29
+ def deep_replace_secret_params(params)
30
+ new.deep_replace_secret_params(params)
31
+ end
30
32
  end
31
33
  end
32
34
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GoogleLogger
4
- VERSION = '1.0.2'
5
- end
4
+ VERSION = '1.2.0'
5
+ end
data/lib/google_logger.rb CHANGED
@@ -8,6 +8,7 @@ require 'google_logger/loggers/local_logger'
8
8
  require 'google_logger/loggers/base'
9
9
  require 'google_logger/controller_logging'
10
10
  require 'google_logger/params_replacer'
11
+ require 'google_logger/json_logger'
11
12
 
12
13
  # Main module which should serve as an interface to all functionalities
13
14
  module GoogleLogger
@@ -60,7 +61,7 @@ module GoogleLogger
60
61
  payload = {
61
62
  message: exception.message,
62
63
  exception: exception.class.name,
63
- bactrace: exception.backtrace&.first(5)
64
+ bactrace: exception.backtrace&.first(configuration.backtrace_length)
64
65
  }
65
66
 
66
67
  create_entry(payload, log_name: 'error', severity: :ERROR)
@@ -92,11 +93,7 @@ module GoogleLogger
92
93
  #
93
94
  # @return [Object] GoogleLogger::Logger by default, local logger if `loc_locally` is set to true
94
95
  def logger
95
- if configuration.log_locally
96
- Loggers::LocalLogger.new
97
- else
98
- Loggers::CloudLogger.new
99
- end
96
+ configuration.log_locally ? local_logger : cloud_logger
100
97
  end
101
98
 
102
99
  # Log gem errors locally if local_logger is present
@@ -107,8 +104,19 @@ module GoogleLogger
107
104
  local_logger.error "GOOGLE_LOGGER ERROR: #{exception.inspect}" if local_logger.present?
108
105
  end
109
106
 
107
+ # mask secret param values
110
108
  def deep_replace_secret_params(params)
111
109
  ParamsReplacer.deep_replace_secret_params(params)
112
110
  end
111
+
112
+ # get a cached instance of a local logger
113
+ def local_logger
114
+ @local_logger ||= Loggers::LocalLogger.new
115
+ end
116
+
117
+ # get a cached instance of a cloud logger
118
+ def cloud_logger
119
+ @cloud_logger ||= Loggers::CloudLogger.new
120
+ end
113
121
  end
114
122
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google_logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Hric
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-08-10 00:00:00.000000000 Z
11
+ date: 2022-07-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: 5.2.4.5
27
+ - !ruby/object:Gem::Dependency
28
+ name: logger
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 1.5.1
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 1.5.1
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: stackdriver
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -50,6 +64,7 @@ files:
50
64
  - lib/google_logger.rb
51
65
  - lib/google_logger/configuration.rb
52
66
  - lib/google_logger/controller_logging.rb
67
+ - lib/google_logger/json_logger.rb
53
68
  - lib/google_logger/loggers/base.rb
54
69
  - lib/google_logger/loggers/cloud_logger.rb
55
70
  - lib/google_logger/loggers/local_logger.rb
@@ -61,11 +76,13 @@ licenses:
61
76
  metadata:
62
77
  homepage_uri: https://github.com/panter/google_logger
63
78
  source_code_uri: https://github.com/panter/google_logger
79
+ rubygems_mfa_required: 'true'
64
80
  post_install_message:
65
81
  rdoc_options: []
66
82
  require_paths:
67
83
  - lib
68
84
  - lib/google_logger
85
+ - lib/google_logger/json_logger
69
86
  - lib/google_logger/loggers
70
87
  required_ruby_version: !ruby/object:Gem::Requirement
71
88
  requirements:
@@ -78,7 +95,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
78
95
  - !ruby/object:Gem::Version
79
96
  version: '0'
80
97
  requirements: []
81
- rubygems_version: 3.2.25
98
+ rubygems_version: 3.2.3
82
99
  signing_key:
83
100
  specification_version: 4
84
101
  summary: Provides a simple interface to write logs to the google cloud platform.