loglevel 0.4.6 → 1.0.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
  SHA1:
3
- metadata.gz: e79aa9c19b2851bcdee30c94c4bb1a011fb3db36
4
- data.tar.gz: be838162ac2ae9e6c0115f364a8a8e7ca9f02701
3
+ metadata.gz: 2f7aa16f419c37f168c98409956cfa25b9cee845
4
+ data.tar.gz: 0ada2cc16ef1b3fa9527c438e26858d4dae83cea
5
5
  SHA512:
6
- metadata.gz: a5d700d54652aae4b51630fe9f3f8efc152d8746579d07ca3594d271804154b358a9790b3696e3dfcb63eee085e2f18388ecaed686368ee2696757536fd86a98
7
- data.tar.gz: d76b5d4acbc52b42b4a97b0aa7a3ab33ef5155738739b5cf74982865a071866e28fcf3f4f67b236f32016a8b040a19359168cfff943d10c9dc7c0aaffbf281ba
6
+ metadata.gz: dab91b3da3a07b99134fe9bec53ac2a2020d9edf37b7dcc1c94f0b254c90a4221aea2ea065545e19a4ec74b0b5e70775ff6071a090112d40358a418dfb941454
7
+ data.tar.gz: 0eff2e99f03b5d23abb3f65382996f5681fed4c53e5bad3e8514bcbc4bc0598eb1e29a996f7ab71f8a3f71580b96fde0c9be0c4cd9f68779d206bf9126517440
data/.rubocop.yml CHANGED
@@ -1,49 +1,63 @@
1
- ---
2
- AllCops:
3
- TargetRubyVersion: 2.0
4
- DisplayCopNames: true
5
- Exclude:
6
- - 'tmp/**/*'
7
-
8
- Style/MixinGrouping:
9
- Exclude:
10
- - 'spec/**/*.rb'
11
-
12
- Metrics/BlockLength:
13
- CountComments: false # count full line comments?
14
- Exclude:
15
- - '**/*_spec.rb'
16
-
17
- StringLiterals:
18
- EnforcedStyle: single_quotes
19
- Enabled: true
20
-
21
- DotPosition:
22
- Description: 'Checks the position of the dot in multi-line method calls.'
23
- EnforcedStyle: leading
24
- Enabled: true
25
-
26
- ClassAndModuleChildren:
27
- Description: 'Checks style of children classes and modules.'
28
- EnforcedStyle: nested
29
- Enabled: true
30
-
31
- Documentation:
32
- Description: 'Document classes and non-namespace modules.'
33
- Enabled: false
34
-
35
- FileName:
36
- Description: 'Use snake_case for source file names.'
37
- Enabled: true
38
-
39
- LineLength:
40
- Max: 120
41
- Enabled: true
42
-
43
- Style/ExtraSpacing:
44
- Description: 'Do not use unnecessary spacing.'
45
- Enabled: true
46
-
47
- Lint/LiteralInInterpolation:
48
- Description: 'Avoid interpolating literals in strings'
49
- AutoCorrect: true
1
+ ---
2
+ AllCops:
3
+ TargetRubyVersion: 2.0
4
+ DisplayCopNames: true
5
+ Exclude:
6
+ - 'tmp/**/*'
7
+
8
+ Style/MixinGrouping:
9
+ Exclude:
10
+ - 'spec/**/*.rb'
11
+
12
+ Metrics/BlockLength:
13
+ CountComments: false # count full line comments?
14
+ Exclude:
15
+ - '**/*_spec.rb'
16
+
17
+ StringLiterals:
18
+ EnforcedStyle: single_quotes
19
+ Enabled: true
20
+
21
+ DotPosition:
22
+ Description: 'Checks the position of the dot in multi-line method calls.'
23
+ EnforcedStyle: leading
24
+ Enabled: true
25
+
26
+ ClassAndModuleChildren:
27
+ Description: 'Checks style of children classes and modules.'
28
+ EnforcedStyle: nested
29
+ Enabled: true
30
+
31
+ Documentation:
32
+ Description: 'Document classes and non-namespace modules.'
33
+ Enabled: false
34
+
35
+ FileName:
36
+ Description: 'Use snake_case for source file names.'
37
+ Enabled: true
38
+
39
+ LineLength:
40
+ Max: 120
41
+ Enabled: true
42
+
43
+ Style/ExtraSpacing:
44
+ Description: 'Do not use unnecessary spacing.'
45
+ Enabled: true
46
+
47
+ Lint/LiteralInInterpolation:
48
+ Description: 'Avoid interpolating literals in strings'
49
+ AutoCorrect: true
50
+
51
+ Style/ModuleFunction:
52
+ EnforcedStyle: extend_self # Allows us to have private methods too
53
+
54
+ Style/PercentLiteralDelimiters:
55
+ # Hound and CodeClimate are currently using an old version of Rubocop with
56
+ # different defaults, so we set them explicitly here.
57
+ PreferredDelimiters:
58
+ default: ()
59
+ '%i': '[]'
60
+ '%I': '[]'
61
+ '%r': '{}'
62
+ '%w': '[]'
63
+ '%W': '[]'
data/README.md CHANGED
@@ -16,6 +16,10 @@ Usage:
16
16
  LOGLEVEL=WARN rails server
17
17
  ```
18
18
 
19
+ Loglevel will direct your logging to `STDOUT` (as suggested in
20
+ [the 12-factor app](https://12factor.net/logs)). See the Log Device section
21
+ below for how to control where your logging goes.
22
+
19
23
  ### Features
20
24
 
21
25
  Control which components create visible log entries by simply setting an
@@ -28,12 +32,6 @@ LOGLEVEL=DEBUG,NOAR,NOHTTP rails server
28
32
  would set the Rails logger level to `:debug` but would suppress messages from
29
33
  the ActiveRecord logger and the HttpLogger gem.
30
34
 
31
- The features are itemized if you use the `HELP` option:
32
-
33
- ```sh
34
- LOGLEVEL=HELP rails console
35
- ```
36
-
37
35
  Here are the available settings:
38
36
 
39
37
  | Option | Description |
data/lib/loglevel.rb CHANGED
@@ -1,134 +1,29 @@
1
1
  require 'loglevel/exception'
2
- require 'loglevel/classes'
3
- require 'loglevel/active_record'
4
- require 'loglevel/http_logger'
5
- require 'loglevel/help'
6
- require 'loglevel/logger_analyzer'
2
+ require 'loglevel/constants'
3
+ require 'loglevel/loggable_classes'
7
4
 
8
- class Loglevel
9
- ENV_VAR_LEVEL = 'LOGLEVEL'.freeze
10
- ENV_VAR_LOGGER = 'LOGLEVEL_LOGGER'.freeze
11
- ENV_VAR_DEVICE = 'LOGLEVEL_DEVICE'.freeze
12
- ENV_VAR_CLASSES = 'LOGLEVEL_CLASSES'.freeze
13
- LOGLEVELS = %w[DEBUG INFO WARN ERROR FATAL UNKNOWN].freeze
14
-
15
- LOGLEVELS.each_with_index { |k, v| const_set(k, v) }
16
-
17
- class << self
18
- def setup
19
- new.setup
20
- end
21
-
22
- def inspect
23
- new.inspect
24
- end
25
-
26
- def debug
27
- new.debug
28
- end
29
- end
30
-
31
- attr_reader :classes
32
- attr_writer :logger
33
-
34
- def logger
35
- @logger ||= use_default_logger? ? default_logger : logger_class.new(device)
36
- end
37
-
38
- def level
39
- @level ||= self.class.const_get level_name
40
- end
5
+ module Loglevel
6
+ extend self
41
7
 
42
8
  def setup
43
- return self unless ENV[ENV_VAR_LEVEL]
44
-
45
- @settings = nil
46
- @logger = nil
47
- @level = nil
48
-
49
- setup_classes
50
- announce
51
- self
52
- end
53
-
54
- private
55
-
56
- def initialize
57
- @classes = Loglevel::Classes.new.classes
58
- end
59
-
60
- def setup_classes
61
- @classes_to_setup = @classes.dup
62
- setup_active_record
63
- setup_http_logger
64
- setup_remaining_classes
65
- end
66
-
67
- # Setup any other classes (e.g. Rails)
68
- def setup_remaining_classes
69
- @classes_to_setup.each do |klass|
70
- klass.logger = logger
71
- klass.logger.level = level
72
- end
73
- end
74
-
75
- def announce
76
- help if help?
77
- puts inspect if level_name == 'DEBUG'
78
- puts debug if lookup('__DEBUG')
79
- end
80
-
81
- def level_name
82
- (LOGLEVELS & settings).first || 'WARN'
83
- end
84
-
85
- def logger_class
86
- use_default_logger? ? default_logger.class : Object.const_get(logger_class_name)
87
- rescue NameError
88
- raise Loglevel::Exception::BadLoggerClass, "Can't find logger class #{logger_class_name} - have you required it?"
89
- end
90
-
91
- def logger_class_name
92
- @logger_class_name ||= ENV.fetch(ENV_VAR_LOGGER, logger_class_name_default)
9
+ loggable_classes.each(&:setup)
93
10
  end
94
11
 
95
- def logger_class_name_default
96
- @logger_class_default ||= if default_logger.nil? || default_logger_not_instantiatable?
97
- 'Logger'
98
- else
99
- default_logger.class.name
100
- end
101
- end
102
-
103
- def default_logger_not_instantiatable?
104
- defined?(ActiveSupport::TaggedLogging) && default_logger.is_a?(ActiveSupport::TaggedLogging)
105
- end
106
-
107
- def use_default_logger?
108
- !ENV[ENV_VAR_LOGGER] && !ENV[ENV_VAR_DEVICE] && !default_logger.nil?
109
- end
110
-
111
- def default_logger
112
- @default_logger ||= ::Rails.logger if defined?(::Rails)
12
+ def debug
13
+ loggable_classes.map { |c| { name: c.class_name, logger: c.logger.class, level: c.level.level_name } }
113
14
  end
114
15
 
115
16
  def device
116
- %w[STDOUT STDERR].include?(device_name) ? Object.const_get(device_name) : device_name
117
- end
118
-
119
- def device_name
120
- ENV.fetch(ENV_VAR_DEVICE, 'STDOUT')
17
+ @device ||= ENV.fetch Loglevel::ENV_VAR_DEVICE, STDOUT
121
18
  end
122
19
 
123
- def lookup(setting)
124
- settings.include?(setting)
20
+ def loggable_classes
21
+ @loggable_classes ||= LoggableClasses.clone # More testable
125
22
  end
126
23
 
127
- def settings
128
- @settings ||= ENV.fetch(ENV_VAR_LEVEL, '').upcase.split(',')
24
+ def name_to_class(class_name, exception_class)
25
+ Object.const_get(class_name)
26
+ rescue NameError => exception
27
+ Loglevel::Exception.handle_bad_class(class_name, exception, exception_class)
129
28
  end
130
-
131
- include Loglevel::ActiveRecord
132
- include Loglevel::HttpLogger
133
- include Loglevel::Help
134
29
  end
@@ -0,0 +1,11 @@
1
+ module Loglevel
2
+ LOGLEVELS = %w[DEBUG INFO WARN ERROR FATAL UNKNOWN].freeze
3
+ LOGLEVELS.each_with_index { |k, v| const_set(k, v) }
4
+
5
+ ENV_VAR_LEVEL = 'LOGLEVEL'.freeze
6
+ ENV_VAR_LOGGER = 'LOGGER'.freeze
7
+ ENV_VAR_DEVICE = 'LOGDEVICE'.freeze
8
+ ENV_VAR_CLASSES = 'LOGCLASSES'.freeze
9
+
10
+ SCOPE_RESOLUTION_OPERATOR = SRO = '::'.freeze
11
+ end
@@ -1,6 +1,16 @@
1
- class Loglevel
1
+ module Loglevel
2
2
  # Local exception classes to make handling exceptions easier
3
3
  class Exception < RuntimeError
4
- BadLoggerClass = Class.new(self)
4
+ UnknownLoggableClass = Class.new(self)
5
+ UnknownLoggerClass = Class.new(self)
6
+ ClassNotLoggable = Class.new(self)
7
+
8
+ def self.handle_bad_class(class_name, exception, exception_class)
9
+ raise exception unless exception.class == NameError &&
10
+ class_name.respond_to?(:split) &&
11
+ exception.message =~ /.+constant.+#{class_name.split(Loglevel::SRO).first}/
12
+
13
+ raise exception_class, class_name
14
+ end
5
15
  end
6
16
  end
@@ -0,0 +1,62 @@
1
+ require 'loglevel/loggable_class/level'
2
+ require 'loglevel/loggable_class/smart_logger'
3
+
4
+ module Loglevel
5
+ class LoggableClass
6
+ attr_reader :class_name, :logger
7
+ alias to_s class_name
8
+
9
+ def setup
10
+ self.logger = smart_logger.create
11
+ logger.level = level.value
12
+ klass.logger = logger
13
+ additional_http_setup
14
+ end
15
+
16
+ def level
17
+ @level ||= Level.new(self)
18
+ end
19
+
20
+ def active_record?
21
+ @active_record ||= canonical_name == '::ActiveRecord::Base'
22
+ end
23
+
24
+ def http?
25
+ @http ||= canonical_name == '::HttpLogger'
26
+ end
27
+
28
+ private
29
+
30
+ attr_writer :logger
31
+
32
+ def initialize(class_name)
33
+ @class_name = class_name
34
+ raise Loglevel::Exception::ClassNotLoggable, class_name unless klass.respond_to?(:logger=)
35
+ end
36
+
37
+ def additional_http_setup
38
+ return unless http?
39
+
40
+ klass.level = level.level_name.downcase.to_sym
41
+ klass.log_response_body = settings.response_body?
42
+ klass.log_headers = settings.request_headers?
43
+ klass.ignore = [/9200/, /7474/] # ignore Elasticsearch & Neo4J
44
+ end
45
+
46
+ def klass
47
+ @klass ||= Loglevel.name_to_class(canonical_name, Loglevel::Exception::UnknownLoggableClass)
48
+ end
49
+
50
+ def canonical_name
51
+ @canonical_name ||= class_name[0, 2] == Loglevel::SRO ? class_name : "#{Loglevel::SRO}#{class_name}"
52
+ end
53
+
54
+ def settings
55
+ @settings ||= Loglevel::Settings.clone # More testable
56
+ end
57
+
58
+ def smart_logger
59
+ @smart_logger ||= SmartLogger.clone # More testable
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,44 @@
1
+ require 'loglevel/settings'
2
+
3
+ module Loglevel
4
+ class LoggableClass
5
+ class Level
6
+ def value
7
+ @value ||= Loglevel.const_get level_name
8
+ end
9
+
10
+ def level_name
11
+ @level_name ||= http_level_name || active_record_level_name || environment_level_name
12
+ end
13
+
14
+ private
15
+
16
+ extend Forwardable
17
+
18
+ def_delegators :loggable_class, :active_record?, :http?
19
+
20
+ attr_reader :loggable_class
21
+
22
+ def initialize(loggable_class, settings = nil)
23
+ @loggable_class = loggable_class
24
+ @settings = settings
25
+ end
26
+
27
+ def http_level_name
28
+ @http_level_name ||= 'FATAL' if loggable_class.http? && !settings.http?
29
+ end
30
+
31
+ def active_record_level_name
32
+ @active_record_level_name ||= 'FATAL' if loggable_class.active_record? && !settings.active_record?
33
+ end
34
+
35
+ def environment_level_name
36
+ @environment_level_name ||= settings.level
37
+ end
38
+
39
+ def settings
40
+ @settings ||= Loglevel::Settings.clone # More testable
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,45 @@
1
+ module Loglevel
2
+ class LoggableClass
3
+ class SmartLogger
4
+ class << self
5
+ def create
6
+ enhanced_logger || simple_logger
7
+ end
8
+
9
+ private
10
+
11
+ def simple_logger
12
+ logger_class.new device
13
+ end
14
+
15
+ def enhanced_logger
16
+ ActiveSupport::TaggedLogging.new(simple_logger) if defined?(ActiveSupport::TaggedLogging)
17
+ end
18
+
19
+ def logger_class
20
+ @logger_class ||= loglevel.name_to_class(class_name, Loglevel::Exception::UnknownLoggerClass)
21
+ end
22
+
23
+ def class_name
24
+ @class_name ||= environment_class_name || rails_class_name || 'Logger'
25
+ end
26
+
27
+ def environment_class_name
28
+ @environment_class_name ||= ENV[Loglevel::ENV_VAR_LOGGER]
29
+ end
30
+
31
+ def rails_class_name
32
+ 'ActiveSupport::Logger' if defined?(ActiveSupport::Logger)
33
+ end
34
+
35
+ def device
36
+ @device ||= loglevel.device
37
+ end
38
+
39
+ def loglevel
40
+ @loglevel ||= Loglevel.clone # More testable
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,33 @@
1
+ require 'loglevel/loggable_class'
2
+
3
+ module Loglevel
4
+ module LoggableClasses
5
+ class << self
6
+ extend Forwardable
7
+
8
+ def_delegators :classes, :each, :map, :length
9
+
10
+ def classes
11
+ @classes ||= class_names.map { |class_name| class_from_name(class_name) }.compact
12
+ end
13
+
14
+ private
15
+
16
+ RAILS_LOGGABLE_CLASSES = %w[Rails ActiveRecord::Base HttpLogger].freeze
17
+
18
+ def class_names
19
+ @class_names ||= environment_class_names | RAILS_LOGGABLE_CLASSES
20
+ end
21
+
22
+ def environment_class_names
23
+ @environment_class_names ||= ENV.fetch(Loglevel::ENV_VAR_CLASSES, '').gsub(/[[:space:]]/, '').split(',')
24
+ end
25
+
26
+ def class_from_name(class_name)
27
+ LoggableClass.new class_name
28
+ rescue Loglevel::Exception
29
+ nil
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,35 @@
1
+ module Loglevel
2
+ module Settings
3
+ extend self
4
+
5
+ def level
6
+ @level ||= (Loglevel::LOGLEVELS & settings).first || 'WARN'
7
+ end
8
+
9
+ def http?
10
+ !lookup('NOHTTP')
11
+ end
12
+
13
+ def active_record?
14
+ !lookup('NOAR')
15
+ end
16
+
17
+ def response_body?
18
+ !lookup('NOBODY')
19
+ end
20
+
21
+ def request_headers?
22
+ !lookup('NOHEADERS')
23
+ end
24
+
25
+ private
26
+
27
+ def lookup(setting)
28
+ settings.include?(setting)
29
+ end
30
+
31
+ def settings
32
+ @settings ||= ENV.fetch(ENV_VAR_LEVEL, '').upcase.split(',')
33
+ end
34
+ end
35
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class Loglevel
4
- VERSION = '0.4.6'.freeze
3
+ module Loglevel
4
+ VERSION = '1.0.0'.freeze
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: loglevel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.6
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dominic Sayers
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-04-11 00:00:00.000000000 Z
11
+ date: 2017-04-12 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A simple gem to control logging at runtime with an environment variable
14
14
  email:
@@ -32,12 +32,13 @@ files:
32
32
  - Rakefile
33
33
  - circle.yml
34
34
  - lib/loglevel.rb
35
- - lib/loglevel/active_record.rb
36
- - lib/loglevel/classes.rb
35
+ - lib/loglevel/constants.rb
37
36
  - lib/loglevel/exception.rb
38
- - lib/loglevel/help.rb
39
- - lib/loglevel/http_logger.rb
40
- - lib/loglevel/logger_analyzer.rb
37
+ - lib/loglevel/loggable_class.rb
38
+ - lib/loglevel/loggable_class/level.rb
39
+ - lib/loglevel/loggable_class/smart_logger.rb
40
+ - lib/loglevel/loggable_classes.rb
41
+ - lib/loglevel/settings.rb
41
42
  - lib/loglevel/version.rb
42
43
  - loglevel.gemspec
43
44
  - script/console
@@ -1,24 +0,0 @@
1
- # ActiveRecord-specific settings
2
- class Loglevel
3
- module ActiveRecord
4
- private
5
-
6
- def active_record?
7
- !lookup('NOAR')
8
- end
9
-
10
- def setup_active_record
11
- return unless defined?(::ActiveRecord::Base) && @classes_to_setup.delete(::ActiveRecord::Base)
12
- active_record? ? setup_active_record_logger_to_log : setup_active_record_logger_not_to_log
13
- end
14
-
15
- def setup_active_record_logger_to_log
16
- ::ActiveRecord::Base.logger = logger
17
- ::ActiveRecord::Base.logger.level = level
18
- end
19
-
20
- def setup_active_record_logger_not_to_log
21
- ::ActiveRecord::Base.logger.level = Loglevel::FATAL
22
- end
23
- end
24
- end
@@ -1,29 +0,0 @@
1
- class Loglevel
2
- class Classes
3
- attr_reader :classes
4
-
5
- def stringify
6
- @stringify ||= classes.map(&:name)
7
- end
8
-
9
- private
10
-
11
- def initialize
12
- @classes = class_names.map do |class_name|
13
- begin
14
- Object.const_get("::#{class_name}")
15
- rescue NameError # Uninitialized constant
16
- nil
17
- end
18
- end.compact
19
- end
20
-
21
- def class_names
22
- @class_names ||= passed_class_names | %w[Rails ActiveRecord::Base HttpLogger]
23
- end
24
-
25
- def passed_class_names
26
- @passed_class_names ||= ENV.fetch(Loglevel::ENV_VAR_CLASSES, '').gsub(/[[:space:]]/, '').split(',')
27
- end
28
- end
29
- end
data/lib/loglevel/help.rb DELETED
@@ -1,43 +0,0 @@
1
- # Help
2
- class Loglevel
3
- module Help
4
- def help
5
- logger.info <<-HELP.gsub(' ', '')
6
- Usage: LOGLEVEL=SETTING,SETTING,SETTING rails server
7
-
8
- Available settings are as follows:
9
- HELP Show these options
10
- FATAL Equivalent to config.log_level = :fatal
11
- ERROR Equivalent to config.log_level = :error
12
- WARN Equivalent to config.log_level = :warn
13
- INFO Equivalent to config.log_level = :info
14
- DEBUG Equivalent to config.log_level = :debug
15
- NOAR Do not show ActiveRecord messages
16
- NOHTTP Do not show HTTP messages
17
- NOHEADERS Do not include response headers in HTTP log
18
- NOBODY Do not include response body in HTTP log
19
-
20
- HTTP messages will only be shown if http_logger gem is present
21
- HELP
22
- end
23
-
24
- def inspect
25
- "#<#{self.class}: logger=#{logger_class}, device=#{device_name}, level=#{level_name}, settings=#{settings}>"
26
- end
27
-
28
- def debug
29
- debug = classes.map do |klass|
30
- l = Loglevel::LoggerAnalyzer.new(klass)
31
- "#{klass}: logger=#{l.logger_class}, device=#{l.device_name}, level=#{l.level_name}"
32
- end
33
-
34
- debug.join("\n")
35
- end
36
-
37
- private
38
-
39
- def help?
40
- lookup('HELP') || settings == ['TRUE']
41
- end
42
- end
43
- end
@@ -1,35 +0,0 @@
1
- # HttpLogger-specific settings
2
- class Loglevel
3
- module HttpLogger
4
- private
5
-
6
- def http?
7
- !lookup('NOHTTP')
8
- end
9
-
10
- def response_body?
11
- !lookup('NOBODY')
12
- end
13
-
14
- def request_headers?
15
- !lookup('NOHEADERS')
16
- end
17
-
18
- def setup_http_logger
19
- return unless defined?(::HttpLogger) && @classes_to_setup.delete(::HttpLogger)
20
- http? ? setup_http_logger_to_log : setup_http_logger_not_to_log
21
- end
22
-
23
- def setup_http_logger_to_log
24
- ::HttpLogger.logger = logger
25
- ::HttpLogger.level = level_name.downcase.to_sym
26
- ::HttpLogger.log_response_body = response_body?
27
- ::HttpLogger.log_headers = request_headers?
28
- ::HttpLogger.ignore = [/9200/, /7474/] # ignore Elasticsearch & Neo4J
29
- end
30
-
31
- def setup_http_logger_not_to_log
32
- ::HttpLogger.level = :fatal
33
- end
34
- end
35
- end
@@ -1,40 +0,0 @@
1
- # Analyses the logger method of a class
2
- class Loglevel
3
- class LoggerAnalyzer
4
- def level_name
5
- @level_name ||= Loglevel::LOGLEVELS[level]
6
- end
7
-
8
- def level
9
- @level ||= logger_level.is_a?(0.class) ? logger_level : 5
10
- end
11
-
12
- def logger_level
13
- @logger_level ||= logger.level
14
- end
15
-
16
- def device_name
17
- @device_name ||= logdev.filename || logdev.dev.inspect || 'nil'
18
- end
19
-
20
- def logdev
21
- @logdev ||= logger.instance_variable_get('@logdev') || Struct.new(:filename, :dev).new
22
- end
23
-
24
- def logger_class
25
- @logger_class ||= logger.class
26
- end
27
-
28
- def logger
29
- @logger ||= klass.logger || Struct.new(:level).new(0)
30
- end
31
-
32
- private
33
-
34
- attr_reader :klass
35
-
36
- def initialize(klass)
37
- @klass = klass
38
- end
39
- end
40
- end