logjam_agent 0.33.3 → 0.34.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
  SHA256:
3
- metadata.gz: eb075dc1c42d045d800df979adde0ba2a4861de680c5154e42fb04552d2d4019
4
- data.tar.gz: 6f0bf552907f852f0d6e16dcbf05f66b7d0ec5488c36e206046ae4edd5319db3
3
+ metadata.gz: f3cc7aaf7edaf4f4a2ab8b0cbb9922449fcadf2ca515add756d9052ca30f104a
4
+ data.tar.gz: 9c648bc52c752ebd7a394b9b74f5a2d2ff1f92aff23393a37dcd714b324339ea
5
5
  SHA512:
6
- metadata.gz: 30597a450700826424e80d43bdd1e210b0a11e27ba1576bdfe3498fa71d3bd122d30e36b8ba5038a1e2544e30e0a7b63b2ef2e3214df7719276fbdd311d8693f
7
- data.tar.gz: 271462e2feac5b3ef4eaa29197b64b7d627b6f2561b699f3f0f24ec90a567ef3925d888486e40820f69b410528215f5f790d5f6a0248a2e4a66ec22dd323e7ca
6
+ metadata.gz: 29350bbdb8502910e181ee155a369d0a16793a916430b4150aee46e956e931aac3ba697d9066e0bc14c6826918b1085022b492e13d283f3f49b19cd10a2a2c22
7
+ data.tar.gz: 1798f1ce01b48e947fd4b54455c8f446551e474b93120fed751eefc0ea72584e68b610d7d2cbe4fa7f46b4f6d97a9a82d50049339cb477b5dfad62b9a57c005f
@@ -27,17 +27,21 @@ end
27
27
  module LogjamAgent
28
28
  class BufferedLogger < ActiveSupport::Logger
29
29
 
30
- attr_accessor :formatter
31
-
32
30
  # for backwards compatibility. needs to go away.
33
31
  include LogjamAgent::RequestHandling
34
32
 
35
33
  def initialize(*args)
36
34
  super(*args)
37
- @formatter = lambda{|_, _, _, message| message}
35
+ # make sure we always have a formatter
36
+ self.formatter = Logger::Formatter.new
37
+ end
38
+
39
+ def formatter=(formatter)
40
+ super
41
+ @formatter.extend LoggingAttributes
38
42
  end
39
43
 
40
- def add(severity, message = nil, progname = nil, tags_text = nil, &block)
44
+ def add(severity, message = nil, progname = nil, &block)
41
45
  return if level > severity
42
46
  message = progname if message.nil?
43
47
  progname = nil
@@ -53,18 +57,12 @@ module LogjamAgent
53
57
  end
54
58
  end
55
59
  log_to_log_device = LogjamAgent.log_to_log_device?(severity, message)
56
- message = "#{tags_text}#{message}" unless tags_text.blank?
60
+ attributes = formatter.render_attributes
61
+ message = "[#{attributes}] #{message}" if attributes
57
62
  time = Time.now
58
63
  if log_to_log_device
59
- formatted_message = formatter.call(severity, time, progname, message)
60
- if respond_to?(:buffer)
61
- buffer << formatted_message << "\n"
62
- auto_flush
63
- elsif @log # @log is a logger (or nil for rails 4)
64
- @log << "#{formatted_message}\n"
65
- elsif @logdev
66
- @logdev.write(formatted_message)
67
- end
64
+ formatted_message = formatter.call(format_severity(severity), time, progname, message)
65
+ @logdev.write(formatted_message)
68
66
  end
69
67
  request.add_line(severity, time, message) if request
70
68
  message
@@ -72,18 +70,22 @@ module LogjamAgent
72
70
 
73
71
  def logdev=(log_device)
74
72
  raise "cannot connect logger to new log device" unless log_device.respond_to?(:write)
75
- if respond_to?(:buffer)
76
- @log = log_device
77
- else
78
- (@log||self).instance_eval do
79
- raise "cannot set log device" unless defined?(@logdev)
80
- @logdev = log_device
81
- end
82
- end
73
+ raise "cannot set log device" unless defined?(@logdev)
74
+ @logdev = log_device
83
75
  end
84
76
 
85
77
  private
86
78
 
79
+ SEV_LABEL_CACHE = SEV_LABEL.map{|sev| "%-5s" % sev}
80
+
81
+ def format_severity(severity)
82
+ if severity.is_a?(String)
83
+ "%-5s" % severity
84
+ else
85
+ SEV_LABEL_CACHE[severity] || 'ALIEN'
86
+ end
87
+ end
88
+
87
89
  def detect_logged_exception(message)
88
90
  (matcher = LogjamAgent.exception_matcher) && message[matcher]
89
91
  end
@@ -0,0 +1,33 @@
1
+ module LogjamAgent
2
+ module LoggingAttributes
3
+
4
+ extend self
5
+
6
+ def attributes=(attributes)
7
+ Thread.current.thread_variable_set(:__logjam_agent_logging_attributes__, attributes)
8
+ end
9
+
10
+ def attributes
11
+ Thread.current.thread_variable_get(:__logjam_agent_logging_attributes__) ||
12
+ Thread.current.thread_variable_set(:__logjam_agent_logging_attributes__, [])
13
+ end
14
+
15
+ def set_attribute(name, value)
16
+ if attribute = attributes.detect{|n,v| n == name}
17
+ attribute[1] = value
18
+ else
19
+ attributes << [name, value]
20
+ end
21
+ end
22
+
23
+ def reset_attributes
24
+ self.attributes = []
25
+ end
26
+
27
+ def render_attributes
28
+ attrs = attributes.select{|k,v| !k.nil? }
29
+ attrs.empty? ? nil : attrs.map{|k,v| "#{k}=#{v}"}.join(" ")
30
+ end
31
+
32
+ end
33
+ end
@@ -8,9 +8,9 @@ module LogjamAgent
8
8
  autoload :Middleware, 'logjam_agent/middleware'
9
9
 
10
10
  class Railtie < Rails::Railtie
11
+
11
12
  def logjam_log_path(app)
12
- paths = app.config.paths
13
- (Rails::VERSION::STRING < "3.1" ? paths.log.to_a : paths['log']).first.to_s
13
+ app.config.paths['log'].first.to_s
14
14
  end
15
15
 
16
16
  initializer "initialize_logjam_agent_logger", :before => :initialize_logger do |app|
@@ -18,27 +18,21 @@ module LogjamAgent
18
18
  begin
19
19
  path = ENV["RAILS_LOG_TO_STDOUT"].present? ? STDOUT : logjam_log_path(app)
20
20
  logger = LogjamAgent::BufferedLogger.new(path)
21
+ logger.formatter = app.config.log_formatter || LogjamAgent::SyslogLikeFormatter.new
22
+ logger = ActiveSupport::TaggedLogging.new(logger)
21
23
  logger.level = ::Logger.const_get(app.config.log_level.to_s.upcase)
22
24
  LogjamAgent.log_device_log_level = logger.level
23
- logger.formatter = LogjamAgent::SyslogLikeFormatter.new
24
- logger.auto_flushing = false if Rails.env.production? && Rails::VERSION::STRING < "3.2"
25
- logger = ActiveSupport::TaggedLogging.new(logger) if Rails::VERSION::STRING >= "3.2"
26
25
  LogjamAgent.logger = logger
27
- logger
28
26
  rescue StandardError
29
27
  logger = LogjamAgent::BufferedLogger.new(STDERR)
30
- logger = ActiveSupport::TaggedLogging.new(logger) if Rails::VERSION::STRING >= "3.2"
31
- LogjamAgent.logger = logger
28
+ logger = ActiveSupport::TaggedLogging.new(logger)
32
29
  logger.level = ::Logger::WARN
33
30
  logger.warn(
34
- "Logging Error: Unable to access log file. Please ensure that #{path} exists and is writable. " +
35
- "The log level has been raised to WARN and the output directed to STDERR until the problem is fixed."
36
- )
37
- logger
31
+ "Logging Error: Unable to access log file. Please ensure that #{path} exists and is writable. " +
32
+ "The log level has been raised to WARN and the output directed to STDERR until the problem is fixed."
33
+ )
34
+ LogjamAgent.logger = logger
38
35
  end
39
- if Rails::VERSION::STRING < "3.2"
40
- at_exit { Rails.logger.flush if Rails.logger.respond_to?(:flush) }
41
- end
42
36
  end
43
37
 
44
38
  initializer "logjam_agent", :after => "time_bandits" do |app|
@@ -1,32 +1,8 @@
1
- require 'logger'
2
-
3
1
  module LogjamAgent
4
2
  class SyslogLikeFormatter
5
3
  def initialize
6
4
  @hostname = LogjamAgent.hostname
7
5
  @app_name = "rails"
8
- @newline = ActiveSupport::VERSION::STRING < "4.0" ? "" : "\n"
9
- end
10
-
11
- def attributes=(attributes)
12
- Thread.current.thread_variable_set(:__logjam_formatter_attributes__, attributes)
13
- end
14
-
15
- def attributes
16
- unless attributes = Thread.current.thread_variable_get(:__logjam_formatter_attributes__)
17
- attributes = Thread.current.thread_variable_set(:__logjam_formatter_attributes__, [])
18
- end
19
- attributes
20
- end
21
-
22
- SEV_LABEL = Logger::SEV_LABEL.map{|sev| "%-5s" % sev}
23
-
24
- def format_severity(severity)
25
- if severity.is_a?(String)
26
- "%-5s" % severity
27
- else
28
- SEV_LABEL[severity] || 'ALIEN'
29
- end
30
6
  end
31
7
 
32
8
  def format_time(timestamp)
@@ -38,7 +14,7 @@ module LogjamAgent
38
14
  end
39
15
 
40
16
  def call(severity, timestamp, progname, msg)
41
- "#{format_severity(severity)} #{format_time(timestamp)}#{render_attributes}#{format_host_info(progname)}: #{format_message(msg)}#{@newline}"
17
+ "#{severity} #{format_time(timestamp)}#{format_host_info(progname)}: #{format_message(msg)}\n"
42
18
  end
43
19
 
44
20
  if !defined?(Rails::Railtie) || Rails.env.development?
@@ -49,20 +25,5 @@ module LogjamAgent
49
25
  end
50
26
  end
51
27
 
52
- def render_attributes
53
- attributes.map{|key, value| " #{key}[#{value}]"}.join
54
- end
55
-
56
- def set_attribute(name, value)
57
- if attribute = attributes.detect{|n,v| n == name}
58
- attribute[1] = value
59
- else
60
- attributes << [name, value]
61
- end
62
- end
63
-
64
- def reset_attributes
65
- self.attributes = []
66
- end
67
28
  end
68
29
  end
@@ -1,3 +1,3 @@
1
1
  module LogjamAgent
2
- VERSION = "0.33.3"
2
+ VERSION = "0.34.0"
3
3
  end
data/lib/logjam_agent.rb CHANGED
@@ -2,6 +2,12 @@ require "socket"
2
2
  require "time_bandits"
3
3
  require "logjam_agent/monkey_patches/ffi-rzmq-patch"
4
4
 
5
+ # monkey patch log levels to include NONE
6
+ require "logger"
7
+ module Logger::Severity
8
+ NONE = UNKNOWN + 1
9
+ end
10
+
5
11
  module LogjamAgent
6
12
  module RequestHandling
7
13
  def request
@@ -35,16 +41,10 @@ require "logjam_agent/zmq_forwarder"
35
41
  require "logjam_agent/forwarders"
36
42
  require "logjam_agent/request"
37
43
  require "logjam_agent/buffered_logger"
44
+ require "logjam_agent/logging_attributes"
38
45
  require "logjam_agent/syslog_like_formatter"
39
-
40
46
  require "logjam_agent/railtie" if defined?(Rails::Railtie)
41
47
 
42
- # monkey patch log levels to include NONE
43
- require 'logger'
44
- module Logger::Severity
45
- NONE = UNKNOWN + 1
46
- end
47
-
48
48
  module LogjamAgent
49
49
 
50
50
  class ForwardingError < StandardError; end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logjam_agent
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.33.3
4
+ version: 0.34.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stefan Kaes
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-07-29 00:00:00.000000000 Z
11
+ date: 2022-08-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -235,6 +235,7 @@ files:
235
235
  - lib/logjam_agent/active_support/parameter_filter.rb
236
236
  - lib/logjam_agent/buffered_logger.rb
237
237
  - lib/logjam_agent/forwarders.rb
238
+ - lib/logjam_agent/logging_attributes.rb
238
239
  - lib/logjam_agent/middleware.rb
239
240
  - lib/logjam_agent/monkey_patches/ffi-rzmq-patch.rb
240
241
  - lib/logjam_agent/rack/logger.rb
@@ -275,16 +276,16 @@ required_rubygems_version: !ruby/object:Gem::Requirement
275
276
  - !ruby/object:Gem::Version
276
277
  version: '0'
277
278
  requirements: []
278
- rubygems_version: 3.3.15
279
+ rubygems_version: 3.3.19
279
280
  signing_key:
280
281
  specification_version: 4
281
282
  summary: Logjam client library to be used with logjam
282
283
  test_files:
283
- - test/request_test.rb
284
284
  - test/sinatra_app.rb
285
- - test/sinatra_classic_app.rb
286
285
  - test/sinatra_classic_test.rb
287
- - test/sinatra_test.rb
288
- - test/test_helper.rb
289
- - test/util_test.rb
286
+ - test/sinatra_classic_app.rb
287
+ - test/request_test.rb
290
288
  - test/zmq_forwarder_test.rb
289
+ - test/util_test.rb
290
+ - test/test_helper.rb
291
+ - test/sinatra_test.rb