google_logger 1.0.2 → 1.2.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: 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.