Skip to content

Commit 3df69b4

Browse files
authored
[feat] re-invent RackLogger w CharSequence message (#306)
which allows RubyString to be passed down directly... (would be useful for logging libraries such as log4j2)
1 parent 4602287 commit 3df69b4

16 files changed

+79
-113
lines changed

src/main/java/org/jruby/rack/AbstractRackDispatcher.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ public void process(RackEnvironment request, RackResponseEnvironment response)
4242
}
4343
}
4444

45+
@SuppressWarnings("deprecation")
4546
protected void handleException(
4647
final Exception e,
4748
final RackEnvironment request,

src/main/java/org/jruby/rack/DefaultErrorApplication.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ public void respond(RackResponseEnvironment response) {
154154
}
155155

156156
private void log(RackLogger.Level level, String message, Throwable e) {
157-
if ( context != null ) context.log(level, message, e);
157+
if ( context != null ) context.log(level, (CharSequence) message, e);
158158
}
159159

160160
}

src/main/java/org/jruby/rack/RackApplicationFactoryDecorator.java

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -169,12 +169,7 @@ protected RackConfig getConfig() {
169169
* @param level the logger level
170170
* @param message the log message
171171
*/
172-
protected void log(final RackLogger.Level level, final String message) {
173-
getContextBang().log(level, message);
174-
}
175-
176-
@Deprecated
177-
protected void log(final String level, final String message) {
172+
protected void log(final RackLogger.Level level, final CharSequence message) {
178173
getContextBang().log(level, message);
179174
}
180175

@@ -184,12 +179,7 @@ protected void log(final String level, final String message) {
184179
* @param message the log message
185180
* @param e the exception raised
186181
*/
187-
protected void log(final RackLogger.Level level, final String message, Exception e) {
188-
getContextBang().log(level, message, e);
189-
}
190-
191-
@Deprecated
192-
protected void log(final String level, final String message, Exception e) {
182+
protected void log(final RackLogger.Level level, final CharSequence message, Exception e) {
193183
getContextBang().log(level, message, e);
194184
}
195185

src/main/java/org/jruby/rack/RackContext.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,4 @@
1515
public interface RackContext extends RackLogger {
1616
RackConfig getConfig(); /// NOTE: deprecate ?
1717
String getServerInfo();
18-
// TODO more methods from ServletContext here ?!
1918
}

src/main/java/org/jruby/rack/RackLogger.java

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,23 +18,26 @@ enum Level {
1818

1919
boolean isEnabled(final Level level) ;
2020

21-
void log(Level level, String message) ;
22-
void log(Level level, String message, Throwable ex) ;
21+
void log(Level level, CharSequence message) ;
2322

24-
default void log(String message) {
23+
void log(Level level, CharSequence message, Throwable ex) ;
24+
25+
default void log(CharSequence message) {
2526
log(Level.INFO, message);
2627
}
2728

28-
default void log(String message, Throwable ex) {
29+
default void log(CharSequence message, Throwable ex) {
2930
log(Level.ERROR, message, ex);
3031
}
3132

32-
default void log(String level, String message) {
33-
log(Level.valueOf(level), message);
33+
@Deprecated
34+
default void log(Level level, String message) {
35+
log(level, (CharSequence) message);
3436
}
3537

36-
default void log(String level, String message, Throwable ex) {
37-
log(Level.valueOf(level), message, ex);
38+
@Deprecated
39+
default void log(Level level, String message, Throwable ex) {
40+
log(level, (CharSequence) message, ex);
3841
}
3942

4043
abstract class Base implements RackLogger {

src/main/java/org/jruby/rack/RackServletContextListener.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
import org.jruby.rack.servlet.ServletRackContext;
1717

1818
import static org.jruby.rack.DefaultRackConfig.isThrowInitException;
19-
import static org.jruby.rack.RackLogger.Level.*;
2019

2120
/**
2221
* Web application lifecycle listener.
@@ -100,7 +99,7 @@ protected void handleInitializationException(
10099
throw RackInitializationException.wrap(e);
101100
}
102101
// NOTE: factory should have already logged the error ...
103-
rackContext.log(ERROR, "initialization failed", e);
102+
rackContext.log("initialization failed", e);
104103
}
105104

106105
}

src/main/java/org/jruby/rack/embed/Context.java

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -69,58 +69,48 @@ public void setLevel(Level level) {
6969
}
7070

7171
@Override
72-
public void log(String message) {
72+
public void log(CharSequence message) {
7373
logger.log(message);
7474
}
7575

7676
@Override
77-
public void log(String message, Throwable ex) {
77+
public void log(CharSequence message, Throwable ex) {
7878
logger.log(message, ex);
7979
}
8080

8181
@Override
82-
public void log(Level level, String message) {
82+
public void log(Level level, CharSequence message) {
8383
if ( isEnabled(level) ) logger.log(level, message);
8484
}
8585

8686
@Override
87-
public void log(Level level, String message, Throwable ex) {
87+
public void log(Level level, CharSequence message, Throwable ex) {
8888
if ( isEnabled(level) ) logger.log(level, message, ex);
8989
}
9090

91-
@Override @Deprecated
92-
public void log(String level, String message) {
93-
log(Level.valueOf(level), message);
94-
}
95-
96-
@Override @Deprecated
97-
public void log(String level, String message, Throwable ex) {
98-
log(Level.valueOf(level), message, ex);
99-
}
100-
10191
@Override
10292
public boolean isEnabled(Level level) {
10393
if ( level == null || this.level == null ) return true;
10494
return this.level.ordinal() <= level.ordinal();
10595
}
10696

107-
108-
10997
private class DefaultLogger extends RackLogger.Base {
11098

11199
@Override
112-
public void log(Level level, String message) {
100+
public void log(Level level, CharSequence message) {
113101
final PrintStream out = config.getOut();
114102
out.print(level); out.print(": ");
115103
printMessage(out, message);
104+
out.flush();
116105
}
117106

118107
@Override
119-
public void log(Level level, String message, Throwable ex) {
108+
public void log(Level level, CharSequence message, Throwable ex) {
120109
final PrintStream err = config.getErr();
121110
err.print(level); err.print(": ");
122111
printMessage(err, message);
123112
ex.printStackTrace(err);
113+
err.flush();
124114
}
125115

126116
@Override

src/main/java/org/jruby/rack/ext/Logger.java

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -388,11 +388,11 @@ private boolean add(final int severity, final ThreadContext context,
388388
else if ( msg instanceof RubyException ) { // print backtrace for error
389389
final RubyException error = (RubyException) msg;
390390
error.prepareIntegratedBacktrace(context, null);
391-
doLog( loggerLevel, ExceptionUtils.formatError(error).toString() );
391+
doLog( loggerLevel, ExceptionUtils.formatError(error) );
392392
return true;
393393
}
394394
// @logdev.write(format_message(format_severity(severity), Time.now, progname, message))
395-
if ( ! msg.isNil() ) doLog( loggerLevel, msg.asString() ); // TODO CharSequence ?!
395+
if ( ! msg.isNil() ) doLog( loggerLevel, msg.asString() );
396396
return true;
397397
}
398398

@@ -403,7 +403,8 @@ else if ( msg instanceof RubyException ) { // print backtrace for error
403403
@JRubyMethod(name = "<<")
404404
public IRubyObject append(final ThreadContext context, final IRubyObject msg) {
405405
final RubyString msgString = msg.asString();
406-
doLog(msgString); return msgString.rubyLength(context);
406+
doLog(msgString);
407+
return msgString.rubyLength(context);
407408
}
408409

409410
// private
@@ -462,16 +463,12 @@ public <T> T toJava(Class<T> target) {
462463
return super.toJava(target);
463464
}
464465

465-
private void doLog(RackLogger.Level level, String message) {
466+
private void doLog(RackLogger.Level level, CharSequence message) {
466467
logger.log( level, message );
467468
}
468469

469-
private void doLog(RackLogger.Level level, RubyString message) {
470-
logger.log( level, message.toString() );
471-
}
472-
473470
private void doLog(RubyString message) {
474-
logger.log( message.toString() );
471+
logger.log( message );
475472
}
476473

477474
// LoggerSilence API :

src/main/java/org/jruby/rack/logging/CommonsLoggingLogger.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public boolean isEnabled(Level level) {
4646
}
4747

4848
@Override
49-
public void log(Level level, String message) {
49+
public void log(Level level, CharSequence message) {
5050
if ( level == null ) { logger.info(message); return; }
5151
switch ( level ) {
5252
case DEBUG: logger.debug(message); break;
@@ -58,7 +58,7 @@ public void log(Level level, String message) {
5858
}
5959

6060
@Override
61-
public void log(Level level, String message, Throwable ex) {
61+
public void log(Level level, CharSequence message, Throwable ex) {
6262
if ( level == null ) { logger.error(message, ex); return; }
6363
switch ( level ) {
6464
case DEBUG: logger.debug(message, ex); break;

src/main/java/org/jruby/rack/logging/JulLogger.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,13 +64,13 @@ public boolean isEnabled(Level level) {
6464
}
6565

6666
@Override
67-
public void log(Level level, String message) {
68-
logger.log( mapLevel(level, java.util.logging.Level.INFO), message );
67+
public void log(Level level, CharSequence message) {
68+
logger.log( mapLevel(level, java.util.logging.Level.INFO), message.toString() );
6969
}
7070

7171
@Override
72-
public void log(Level level, String message, Throwable e) {
73-
logger.log( mapLevel(level, java.util.logging.Level.SEVERE), message, e );
72+
public void log(Level level, CharSequence message, Throwable e) {
73+
logger.log( mapLevel(level, java.util.logging.Level.SEVERE), message.toString(), e );
7474
}
7575

7676
private static java.util.logging.Level mapLevel(

0 commit comments

Comments
 (0)