loglevel 0.4.6 → 1.0.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
  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