konsierge-logger 0.1.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: c3e36a75e3be1e81d7b3bfa98e3cb7964d14809771916a6d51325fb175a5f21f
4
+ data.tar.gz: 5024f98cfe54ab47889a80d21a2a203f2d5e7b72b7b59e579247bb01ec1f6cfc
5
+ SHA512:
6
+ metadata.gz: 35e3dc3fd52742bbeec79a9c87c64653a45c4bff73bea2879033110aaff0224d25a51cbd8d7733dd23212f4fdb7dc94a22f419368326b735caba43aae60c7ff1
7
+ data.tar.gz: 97674eab33fd18cc1a8f5805bfffecf0ba4883283e57e780806650219a77bc72e3ae0b3d21f60b3b0a1fab6951911891b2732194c2df342c339bad58769d80a8
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require 'bundler/gem_tasks'
@@ -0,0 +1,38 @@
1
+ require 'logger'
2
+
3
+ module Konsierge
4
+ module Logger
5
+ class LevelFilteredLogger
6
+ attr_reader :backend, :level
7
+
8
+ def initialize(backend, level:)
9
+ @backend = backend
10
+ @level = level
11
+ end
12
+
13
+ def add(severity, message = nil, progname = nil, &block)
14
+ return true if severity < level
15
+
16
+ backend.add(severity, message, progname, &block)
17
+ end
18
+
19
+ ::Logger::Severity.constants.each do |severity_name|
20
+ severity = ::Logger::Severity.const_get(severity_name)
21
+
22
+ define_method(severity_name.to_s.downcase) do |progname = nil, &block|
23
+ add(severity, nil, progname, &block)
24
+ end
25
+ end
26
+
27
+ def method_missing(method_name, *args, &block)
28
+ return super unless backend.respond_to?(method_name)
29
+
30
+ backend.public_send(method_name, *args, &block)
31
+ end
32
+
33
+ def respond_to_missing?(method_name, include_private = false)
34
+ backend.respond_to?(method_name, include_private) || super
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,5 @@
1
+ module Konsierge
2
+ module Logger
3
+ VERSION = '0.1.0'
4
+ end
5
+ end
@@ -0,0 +1,55 @@
1
+ require 'logger'
2
+
3
+ require_relative 'logger/version'
4
+ require_relative 'logger/level_filtered_logger'
5
+
6
+ module Konsierge
7
+ module Logger
8
+ module_function
9
+
10
+ def resolve(logger:, log_level:, default_logger: nil)
11
+ level = resolve_level(log_level)
12
+ configured_logger = resolve_config_value(logger)
13
+
14
+ return LevelFilteredLogger.new(configured_logger, level: level) if configured_logger
15
+
16
+ rails_logger = resolve_rails_logger
17
+ return LevelFilteredLogger.new(rails_logger, level: level) if rails_logger
18
+
19
+ backend = default_logger || build_default_logger
20
+ backend.level = level if backend.respond_to?(:level=)
21
+ backend
22
+ end
23
+
24
+ def build_default_logger
25
+ ::Logger.new($stdout, formatter: ->(_, _, _, msg) { "#{msg}\n" })
26
+ end
27
+
28
+ def resolve_level(log_level)
29
+ level = resolve_config_value(log_level)
30
+
31
+ case level
32
+ when Integer
33
+ level
34
+ when String, Symbol
35
+ ::Logger::Severity.const_get(level.to_s.upcase)
36
+ else
37
+ ::Logger::INFO
38
+ end
39
+ rescue NameError
40
+ ::Logger::INFO
41
+ end
42
+
43
+ def resolve_config_value(value)
44
+ value.respond_to?(:call) ? value.call : value
45
+ end
46
+
47
+ def resolve_rails_logger
48
+ return nil unless defined?(::Rails)
49
+ return nil unless ::Rails.respond_to?(:logger)
50
+
51
+ ::Rails.logger
52
+ end
53
+ private_class_method :resolve_rails_logger
54
+ end
55
+ end
@@ -0,0 +1 @@
1
+ require_relative 'konsierge/logger'
metadata ADDED
@@ -0,0 +1,50 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: konsierge-logger
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - David Rybolovlev
8
+ bindir: exe
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies: []
12
+ description: Provides a level-filtered logger wrapper and shared logger/level resolution
13
+ logic.
14
+ email:
15
+ - i@golifox.ru
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - Rakefile
21
+ - lib/konsierge-logger.rb
22
+ - lib/konsierge/logger.rb
23
+ - lib/konsierge/logger/level_filtered_logger.rb
24
+ - lib/konsierge/logger/version.rb
25
+ homepage: https://gitlab.konsierge.com/digitalbox-public/gem/konsierge-logger
26
+ licenses:
27
+ - MIT
28
+ metadata:
29
+ homepage_uri: https://gitlab.konsierge.com/digitalbox-public/gem/konsierge-logger
30
+ source_code_uri: https://gitlab.konsierge.com/digitalbox-public/gem/konsierge-logger
31
+ changelog_uri: https://gitlab.konsierge.com/digitalbox-public/gem/konsierge-logger/-/blob/main/CHANGELOG.md
32
+ rubygems_mfa_required: 'false'
33
+ rdoc_options: []
34
+ require_paths:
35
+ - lib
36
+ required_ruby_version: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 2.7.0
41
+ required_rubygems_version: !ruby/object:Gem::Requirement
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ requirements: []
47
+ rubygems_version: 4.0.10
48
+ specification_version: 4
49
+ summary: Shared logging utilities for Konsierge gems
50
+ test_files: []