pier_logging 0.1.9 → 0.1.14

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: 35cdfc0d8703bece81fe50518a2e834b7216dbf409960126285f7a319cbaabf4
4
- data.tar.gz: 6d13d3e9e03414af4bbcdeb04b895654cff354760c3f8f2e23f2db8511fdbdd8
3
+ metadata.gz: 5cf700dcf41369d8bf53db3a083f23777b62a30da2250a3297560c2d6aaef187
4
+ data.tar.gz: 25ee1fabd0de22e25b08b3ef356a731b1dd828490699b9dadbb1ddf281fd061e
5
5
  SHA512:
6
- metadata.gz: c9627c7c496e508244c3a9b7c4cbc659d26e77b9a06dceaef2282656bc7ff2705c26cb7065635dad953ac69d571d6f4f623b487b6dbe2c915f22e99627991897
7
- data.tar.gz: 4b4d2b2f0ba570aeeea62580dac125a7df90f4d85883056f06855f6e4e51596b0f2fe2f93cd5c080f33a1349095e84f17f01232c54f6c754d8e319c47fd50d7d
6
+ metadata.gz: 9ce0e74e9ef845b85b226dbc44b462a4d1557d8b74faa5ffb937d983fad866430d21f3d6fd53a294638a2f2eae8cdd56226fde35039e5fbe3605143efe23bdea
7
+ data.tar.gz: 8ad7ccc220039ae2d1ffc9baca617d5984af96431729ec635d3e9294a04886bf4afbb7a2d14c45fb43b3f23b9fe796fe128c80b1dc164e1052a2ce1b476cf27a
@@ -1,7 +1,7 @@
1
1
  require "rails"
2
2
  require "ougai"
3
3
  require "awesome_print"
4
- require "facets"
4
+ require "facets/hash/traverse"
5
5
  require "pier_logging/version"
6
6
  require "pier_logging/logger"
7
7
  require "pier_logging/request_logger"
@@ -9,6 +9,7 @@ require "pier_logging/formatter/base"
9
9
  require "pier_logging/formatter/json"
10
10
  require "pier_logging/formatter/readable"
11
11
  require "pier_logging/helpers/headers"
12
+ require "pier_logging/helpers/env_config"
12
13
 
13
14
  module PierLogging
14
15
  def self.logger_configuration
@@ -53,17 +54,32 @@ module PierLogging
53
54
  end
54
55
 
55
56
  class RequestLoggerConfiguration
56
- attr_reader :enabled, :user_info_getter
57
+ attr_reader :enabled, :user_info_getter, :hide_response_body_for_paths, :log_response
57
58
 
58
59
  def initialize
59
60
  @user_info_getter = nil
60
61
  @enabled = false
62
+ @hide_response_body_for_paths = nil
63
+ @log_response = true
61
64
  end
62
65
 
63
66
  def user_info_getter=(proc)
64
67
  raise ArgumentError, "Config 'user_info_getter' must be a 'Proc'" unless proc.is_a? Proc
65
68
  @user_info_getter = proc
66
69
  end
70
+
71
+ def log_response=(log_response)
72
+ raise ArgumentError, "Config 'log_response' must be a 'boolean'" unless !!log_response == log_response
73
+ @log_response = log_response
74
+ end
75
+
76
+ def hide_response_body_for_paths=(hide_response_body_for_paths)
77
+ unless (hide_response_body_for_paths.is_a? Array) && (hide_response_body_for_paths.all?{|item| item.is_a? Regexp})
78
+ raise ArgumentError, "Config 'hide_response_body_for_paths' must be an 'Array of Regexps'"
79
+ end
80
+
81
+ @hide_response_body_for_paths = hide_response_body_for_paths
82
+ end
67
83
 
68
84
  def enabled=(enabled = false)
69
85
  raise ArgumentError, "Config 'enabled' must be a 'boolean'" unless !!enabled == enabled
@@ -0,0 +1,48 @@
1
+ module PierLogging
2
+ module Helpers
3
+ class EnvConfig
4
+ def self.for(logger = nil, log_dir: 'log', log_file: PierLogging.logger_configuration.env)
5
+ {
6
+ enabled: log_enabled(logger),
7
+ output: log_output(logger, log_dir, log_file),
8
+ level: log_level(logger),
9
+ }
10
+ end
11
+
12
+ private
13
+
14
+ def self.log_output(logger, log_dir, log_file)
15
+ return nil unless log_enabled(logger)
16
+ log_output_env = ENV.fetch(output_env_var(logger), 'STDOUT').upcase
17
+ log_output_env == 'STDOUT' ? STDOUT : output_file_name(log_dir, log_file)
18
+ end
19
+
20
+ def self.log_enabled(logger)
21
+ ENV.fetch(enabled_env_var(logger), 'true') == 'true'
22
+ end
23
+
24
+ def self.log_level(logger)
25
+ ENV.fetch(level_env_var(logger), 'info').upcase
26
+ end
27
+
28
+ def self.output_env_var(logger)
29
+ ['LOG', logger ,'OUTPUT'].compact.join('_').upcase
30
+ end
31
+
32
+ def self.enabled_env_var(logger)
33
+ ['LOG', logger ,'ENABLED'].compact.join('_').upcase
34
+ end
35
+
36
+ def self.level_env_var(logger)
37
+ ['LOG', logger ,'LEVEL'].compact.join('_').upcase
38
+ end
39
+
40
+ def self.output_file_name(log_dir, log_file)
41
+ [
42
+ [ log_dir, log_file ].join('/'),
43
+ 'log'
44
+ ].join('.')
45
+ end
46
+ end
47
+ end
48
+ end
@@ -2,7 +2,12 @@
2
2
  module PierLogging
3
3
  class Logger < Ougai::Logger
4
4
  include ActiveSupport::LoggerThreadSafeLevel
5
- include ActiveSupport::LoggerSilence
5
+ include LoggerSilence
6
+
7
+ def initialize(*args)
8
+ super
9
+ after_initialize if respond_to? :after_initialize
10
+ end
6
11
 
7
12
  def create_formatter
8
13
  PierLogging.logger_configuration.formatter
@@ -59,7 +59,7 @@ module PierLogging
59
59
  },
60
60
  response: {
61
61
  status: status,
62
- body: parse_body(body),
62
+ body: response_body(request.path, body),
63
63
  type: type['Content-Type'],
64
64
  }
65
65
  })
@@ -71,8 +71,17 @@ module PierLogging
71
71
 
72
72
  private
73
73
  def get_request_headers_from_env(env)
74
- env.select { |k,v| k.start_with? 'HTTP_'}.
75
- transform_keys { |k| k.delete_prefix('HTTP_').split('_').join('-').upcase }
74
+ env.select { |k,v| k[0..4] == 'HTTP_'}.
75
+ transform_keys { |k| k[5..-1].split('_').join('-').upcase }
76
+ end
77
+
78
+ def response_body(request_path, body)
79
+ return nil unless PierLogging.request_logger_configuration.log_response
80
+
81
+ hide_response_body_for_paths = PierLogging.request_logger_configuration.hide_response_body_for_paths
82
+ return nil if hide_response_body_for_paths && hide_response_body_for_paths.any?{ |path|request_path =~ path }
83
+
84
+ parse_body(body)
76
85
  end
77
86
 
78
87
  def build_message_from_request(request)
@@ -1,3 +1,3 @@
1
1
  module PierLogging
2
- VERSION = "0.1.9"
2
+ VERSION = "0.1.14"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pier_logging
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.1.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mauricio Banduk
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-07-07 00:00:00.000000000 Z
11
+ date: 2020-07-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ougai
@@ -149,6 +149,7 @@ files:
149
149
  - lib/pier_logging/formatter/base.rb
150
150
  - lib/pier_logging/formatter/json.rb
151
151
  - lib/pier_logging/formatter/readable.rb
152
+ - lib/pier_logging/helpers/env_config.rb
152
153
  - lib/pier_logging/helpers/headers.rb
153
154
  - lib/pier_logging/logger.rb
154
155
  - lib/pier_logging/request_logger.rb