supalog 0.1.1 → 0.1.3

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
  SHA256:
3
- metadata.gz: 6c8cca319693f00e03b191cc803094b8a63a23f034691b29f7a5f1d8086e05f1
4
- data.tar.gz: 99f845d15ceabb198840b07cc8631167d60326e4604988c430c37de8128d74c9
3
+ metadata.gz: 72ab1fb67cc0a4abbc195acc7e2f6253b9e2d9af1bdc279744b6b6efbc2dbc2b
4
+ data.tar.gz: c3cdbe54c8aad4b07d5378551fb73e9e3d58a3ce591d8c31e7b5a9666bd7edbd
5
5
  SHA512:
6
- metadata.gz: e2c2679ab9f609da058d56b7bd1056fc759201ed1479d8815bfafb8a612cf6282e6a3eb8e98c8926ddb1d4a02d0adbd565e58f68e2568e9bcce09c674dcdb038
7
- data.tar.gz: ca74c373ba38a0336efb530e9eddd087542649df91c298bbbff9cdc587d5483902153a2a5e043980629ad3981cd6ac9145eaa38a0db6b684dcfaddd43dfe82e0
6
+ metadata.gz: 0b302654121742015074019b4c71ee44229f4c613f65e0c6645d34d40ddd97fe3e91fdf93e2013d687c8dbfc6b14f223208f1b1b4cf7261da149128235ad88bc
7
+ data.tar.gz: 1e2ba1672ee08df5d8ec6abe20e005220c750fec27c3ab1640ada29256ca3a768403fe575e4e75b7c7045765d47f71108353e1101ac5f34703ef68a05199ad2f
@@ -2,7 +2,8 @@
2
2
  "permissions": {
3
3
  "allow": [
4
4
  "Bash(bundle exec:*)",
5
- "Bash(bundle install:*)"
5
+ "Bash(bundle install:*)",
6
+ "WebFetch(domain:raw.githubusercontent.com)"
6
7
  ]
7
8
  }
8
9
  }
@@ -11,25 +11,91 @@ module Supalog
11
11
  5 => "unknown"
12
12
  }.freeze
13
13
 
14
- def self.attach_logger!(logger)
15
- return unless logger
14
+ class ForwardingLogger
15
+ attr_accessor :formatter, :progname
16
+ attr_writer :level
17
+
18
+ def initialize
19
+ @level = 0
20
+ @formatter = nil
21
+ @progname = nil
22
+ end
16
23
 
17
- original_add = logger.method(:add)
18
- severity_map = SEVERITY_MAP
24
+ def add(severity, message = nil, progname = nil, &block)
25
+ severity ||= 5
19
26
 
20
- logger.define_singleton_method(:add) do |severity, message = nil, progname = nil, &block|
21
- msg = message || (block ? block.call : progname)
27
+ if message.nil?
28
+ if block
29
+ message = block.call
30
+ else
31
+ message = progname
32
+ end
33
+ end
22
34
 
23
- if msg
35
+ if message
24
36
  Supalog.push({
25
- "level" => severity_map[severity] || "unknown",
26
- "message" => msg.to_s,
37
+ "level" => SEVERITY_MAP[severity] || "unknown",
38
+ "message" => message.to_s.gsub(/\e\[[0-9;]*m/, ""),
27
39
  "metadata" => {},
28
40
  "timestamp" => Time.now.utc.iso8601(3)
29
41
  })
30
42
  end
31
43
 
32
- original_add.call(severity, message, progname, &block)
44
+ true
45
+ end
46
+ alias_method :log, :add
47
+
48
+ def debug(message = nil, &block) = add(0, nil, message, &block)
49
+ def info(message = nil, &block) = add(1, nil, message, &block)
50
+ def warn(message = nil, &block) = add(2, nil, message, &block)
51
+ def error(message = nil, &block) = add(3, nil, message, &block)
52
+ def fatal(message = nil, &block) = add(4, nil, message, &block)
53
+ def unknown(message = nil, &block) = add(5, nil, message, &block)
54
+
55
+ def level
56
+ @level
57
+ end
58
+
59
+ def debug? = level <= 0
60
+ def info? = level <= 1
61
+ def warn? = level <= 2
62
+ def error? = level <= 3
63
+ def fatal? = level <= 4
64
+
65
+ alias_method :sev_threshold, :level
66
+ alias_method :sev_threshold=, :level=
67
+
68
+ def close; end
69
+ def reopen(_log = nil); end
70
+ def flush; end
71
+ def <<(msg)
72
+ add(5, msg)
73
+ end
74
+ end
75
+
76
+ def self.attach_logger!(logger)
77
+ return unless logger
78
+
79
+ if logger.respond_to?(:broadcast_to)
80
+ logger.broadcast_to(ForwardingLogger.new)
81
+ else
82
+ original_add = logger.method(:add)
83
+ severity_map = SEVERITY_MAP
84
+
85
+ logger.define_singleton_method(:add) do |severity, message = nil, progname = nil, &block|
86
+ msg = message || (block ? block.call : progname)
87
+
88
+ if msg
89
+ Supalog.push({
90
+ "level" => severity_map[severity] || "unknown",
91
+ "message" => msg.to_s,
92
+ "metadata" => {},
93
+ "timestamp" => Time.now.utc.iso8601(3)
94
+ })
95
+ end
96
+
97
+ original_add.call(severity, message, progname, &block)
98
+ end
33
99
  end
34
100
  end
35
101
  end
@@ -1,13 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "log_subscriber"
4
-
5
3
  module Supalog
6
4
  class Railtie < Rails::Railtie
7
- initializer "supalog.configure_logging" do
8
- if Supalog.configuration.api_key
5
+ config.after_initialize do
6
+ if Supalog.configuration.api_key && Supalog.enabled?
9
7
  Supalog.start!
10
- Supalog::LogSubscriber.attach_logger!(Rails.logger)
8
+ Supalog.attach_logger!(Rails.logger)
11
9
  end
12
10
  end
13
11
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Supalog
4
- VERSION = "0.1.1"
4
+ VERSION = "0.1.3"
5
5
  end
data/lib/supalog.rb CHANGED
@@ -4,6 +4,7 @@ require_relative "supalog/version"
4
4
  require_relative "supalog/configuration"
5
5
  require_relative "supalog/buffer"
6
6
  require_relative "supalog/transport"
7
+ require_relative "supalog/log_subscriber"
7
8
 
8
9
  module Supalog
9
10
  class Error < StandardError; end
@@ -16,6 +17,10 @@ module Supalog
16
17
  def configure
17
18
  yield(configuration)
18
19
  start!
20
+
21
+ if defined?(Rails) && Rails.respond_to?(:logger) && Rails.logger
22
+ attach_logger!(Rails.logger)
23
+ end
19
24
  end
20
25
 
21
26
  def enabled?
@@ -35,6 +40,13 @@ module Supalog
35
40
  @started = true
36
41
  end
37
42
 
43
+ def attach_logger!(logger)
44
+ return if @logger_attached
45
+
46
+ LogSubscriber.attach_logger!(logger)
47
+ @logger_attached = true
48
+ end
49
+
38
50
  def buffer
39
51
  @buffer
40
52
  end
@@ -56,6 +68,7 @@ module Supalog
56
68
  @configuration = Configuration.new
57
69
  @buffer = nil
58
70
  @started = false
71
+ @logger_attached = false
59
72
  end
60
73
  end
61
74
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: supalog
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Jeon