log4jruby 3.0.0.rc1-java → 3.0.0.rc2-java

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: 63ae3e7cb5a390af7767e58ce30270c32cc3c770ba877ce0932627e3efab1607
4
- data.tar.gz: d80186abc03df7b0a2b10befcdda3084eef5cffeb4e1960ce957930d6be1e850
3
+ metadata.gz: a1668efce6b23c33b459992956795614d50f3178ed3c2787e7651f1715b60235
4
+ data.tar.gz: ba8e28cc7b8dbc9531ccec0cb34b7642ab8beacc37eee8be0cd7df2abb5f661e
5
5
  SHA512:
6
- metadata.gz: bbc3e978c3d27fe325b135ff988b063f928daadec1a3608d8cfd891766ab2eefa3e0dc08c60ae3dae9835760236fbcb6e84152bcc2cef8faebfb7d8f2b407bf9
7
- data.tar.gz: 61d52687aa0b3d1658fb29c0c543e0e7ba45789799ebaabc640fa4f2570ea1d395972c856118bfb2e34e45d3c4780dd3e1e45285c609ae7c8c26455a4a9595ad
6
+ metadata.gz: 36c6cbd7bae1b08f33156a3ef73b3e93f00a174bc0e32b2949b5cfff6424a81c3ac12a766a889f618f308fc55fd4f942b3778f4129b3739c4140a4170c4e23a4
7
+ data.tar.gz: 1763996d46b5e5836c911c6061068245464a952c59ba94f890549ea56bf19b97b322a1112471ecb00e21bffc410c78b0e34e2073c0cbbec2ba53ec629ade2310
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # log4jruby Changelog
2
2
 
3
+ ## v3.0.0.rc2
4
+
5
+ * Restored support for JRuby 9.1.x/Ruby 2.3
6
+
3
7
  ## v3.0.0.rc1
4
8
 
5
9
  * JRuby 9.3.x/Ruby 2.6 support - Ruby >= 2.6.8 now required
data/README.md CHANGED
@@ -151,6 +151,10 @@ The default Log4jruby formatter outputs `progname` and `msg` only (as opposed to
151
151
  Severity, timestamp, and backtraces are handed according to your `Log4j` configuration.
152
152
  E.g. [PatternLayout](https://logging.apache.org/log4j/2.x/manual/layouts.html).
153
153
 
154
+ * For JRuby versions < 9.3, Ruby exceptions are not passed directly to the `Throwable` arg of log4j. Instead,
155
+ backtraces are included in the log message by the default formatter. This means that `%throwable` in
156
+ the log4j config will not affect ruby exceptions for Jruby < 9.3.
157
+
154
158
  The output of the `formatter` is passed as the `message` parameter of the [Log4j log methods](https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Category.html#log(org.apache.log4j.Priority,%20java.lang.Object).
155
159
 
156
160
  ## Development
@@ -4,6 +4,10 @@ require 'log4jruby/support/log4j_args'
4
4
  require 'log4jruby/support/levels'
5
5
  require 'log4jruby/support/location'
6
6
  require 'log4jruby/support/log_manager'
7
+ require 'log4jruby/support/formatter'
8
+ require 'log4jruby/support/legacy_shim_formatter'
9
+ require 'log4jruby/support/jruby_version'
10
+
7
11
  require 'logger'
8
12
 
9
13
  module Log4jruby
@@ -121,7 +125,7 @@ module Log4jruby
121
125
  return @formatter if defined?(@formatter)
122
126
 
123
127
  @formatter = if self == Logger.root
124
- ->(_severity, _datetime, progname, msg) { "-- #{progname}: #{msg}" }
128
+ new_default_formatter
125
129
  else
126
130
  parent.formatter
127
131
  end
@@ -167,5 +171,13 @@ module Log4jruby
167
171
  @log4j_logger.send(level, msg, throwable)
168
172
  end
169
173
  end
174
+
175
+ def new_default_formatter
176
+ if Support::JrubyVersion.native_ruby_stacktraces_supported?
177
+ Support::Formatter.new
178
+ else
179
+ Support::LegacyShimFormatter.new
180
+ end
181
+ end
170
182
  end
171
183
  end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Log4jruby
4
+ module Support
5
+ # Default ruby Logger formatter
6
+ # This formatter mimics
7
+ # [Logger::Formatter](https://ruby-doc.org/stdlib-2.6.4/libdoc/logger/rdoc/Logger/Formatter.html)
8
+ # but excludes log level and timestamp to leave it for the Log4j config
9
+ class Formatter
10
+ def call(_severity, _time, progname, msg)
11
+ "-- #{progname}: #{msg}"
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Log4jruby
4
+ module Support
5
+ # Class for explicitly marking JRuby version specific code.
6
+ # Find consumers and remove this and references when no longer needed.
7
+ class JrubyVersion
8
+ class << self
9
+ def native_ruby_stacktraces_supported?
10
+ Gem::Version.new(JRUBY_VERSION) >= Gem::Version.new('9.3')
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Log4jruby
4
+ module Support
5
+ # Default ruby Logger formatter for Jruby < 9.3.x
6
+ # This formatter mimics
7
+ # [Logger::Formatter](https://ruby-doc.org/stdlib-2.6.4/libdoc/logger/rdoc/Logger/Formatter.html)
8
+ # but excludes log level and timestamp (delegated to Log4j).
9
+ # It also appends full backtraces with nested causes.
10
+ class LegacyShimFormatter
11
+ def call(_severity, _time, progname, msg)
12
+ "-- #{msg2str(progname)}: #{msg2str(msg)}"
13
+ end
14
+
15
+ private
16
+
17
+ def msg2str(msg)
18
+ case msg
19
+ when ::String
20
+ msg
21
+ when ::Exception
22
+ exception2str(msg)
23
+ else
24
+ msg.inspect
25
+ end
26
+ end
27
+
28
+ def exception2str(exception)
29
+ "#{exception.message} (#{exception.class})\n\t#{exception.backtrace&.join("\n\t")}" \
30
+ "#{"\nCaused by: #{exception2str(exception.cause)}" if exception.cause}"
31
+ end
32
+ end
33
+ end
34
+ end
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'log4jruby/support/jruby_version'
4
+
3
5
  module Log4jruby
4
6
  module Support
5
7
  # Translate logger args for use by Ruby Logger formatter and log4j.
@@ -37,7 +39,10 @@ module Log4jruby
37
39
  end
38
40
 
39
41
  def exception(obj)
40
- obj.is_a?(::Exception) || obj.is_a?(Java::java.lang.Throwable) ? obj : nil
42
+ if (JrubyVersion.native_ruby_stacktraces_supported? && obj.is_a?(::Exception)) ||
43
+ obj.is_a?(Java::java.lang.Throwable)
44
+ obj
45
+ end
41
46
  end
42
47
  end
43
48
  end
@@ -17,7 +17,7 @@ module Log4jruby
17
17
  end
18
18
 
19
19
  def get_or_create(name)
20
- raise 'name required' if name.to_s.match?(/^\s+$/)
20
+ raise 'name required' if name.to_s.match(/^\s+$/)
21
21
 
22
22
  @mutex.synchronize do
23
23
  @loggers[name] ||= new_logger(name)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Log4jruby
4
- VERSION = '3.0.0.rc1'
4
+ VERSION = '3.0.0.rc2'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: log4jruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0.rc1
4
+ version: 3.0.0.rc2
5
5
  platform: java
6
6
  authors:
7
7
  - Lenny Marks
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-09-06 00:00:00.000000000 Z
11
+ date: 2022-09-12 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Ruby Logger using Log4j, geared toward those who use JRuby to write Ruby
14
14
  code using/extending Java code. Ruby and Java are configured together using traditional
@@ -24,6 +24,9 @@ files:
24
24
  - lib/log4jruby.rb
25
25
  - lib/log4jruby/logger.rb
26
26
  - lib/log4jruby/logger_for_class.rb
27
+ - lib/log4jruby/support/formatter.rb
28
+ - lib/log4jruby/support/jruby_version.rb
29
+ - lib/log4jruby/support/legacy_shim_formatter.rb
27
30
  - lib/log4jruby/support/levels.rb
28
31
  - lib/log4jruby/support/location.rb
29
32
  - lib/log4jruby/support/log4j_args.rb
@@ -40,9 +43,9 @@ require_paths:
40
43
  - lib
41
44
  required_ruby_version: !ruby/object:Gem::Requirement
42
45
  requirements:
43
- - - "~>"
46
+ - - ">="
44
47
  - !ruby/object:Gem::Version
45
- version: 2.6.8
48
+ version: 2.3.3
46
49
  required_rubygems_version: !ruby/object:Gem::Requirement
47
50
  requirements:
48
51
  - - ">"