logjam_agent 0.33.3 → 0.34.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
  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