diff --git a/src/main/java/org/jruby/rack/AbstractRackDispatcher.java b/src/main/java/org/jruby/rack/AbstractRackDispatcher.java index 3c70a6f8..a49b2c81 100644 --- a/src/main/java/org/jruby/rack/AbstractRackDispatcher.java +++ b/src/main/java/org/jruby/rack/AbstractRackDispatcher.java @@ -42,6 +42,7 @@ public void process(RackEnvironment request, RackResponseEnvironment response) } } + @SuppressWarnings("deprecation") protected void handleException( final Exception e, final RackEnvironment request, diff --git a/src/main/java/org/jruby/rack/DefaultErrorApplication.java b/src/main/java/org/jruby/rack/DefaultErrorApplication.java index 1abd3ecb..25eab5d3 100644 --- a/src/main/java/org/jruby/rack/DefaultErrorApplication.java +++ b/src/main/java/org/jruby/rack/DefaultErrorApplication.java @@ -154,7 +154,7 @@ public void respond(RackResponseEnvironment response) { } private void log(RackLogger.Level level, String message, Throwable e) { - if ( context != null ) context.log(level, message, e); + if ( context != null ) context.log(level, (CharSequence) message, e); } } diff --git a/src/main/java/org/jruby/rack/RackApplicationFactoryDecorator.java b/src/main/java/org/jruby/rack/RackApplicationFactoryDecorator.java index 5111a2e4..418bd028 100644 --- a/src/main/java/org/jruby/rack/RackApplicationFactoryDecorator.java +++ b/src/main/java/org/jruby/rack/RackApplicationFactoryDecorator.java @@ -169,12 +169,7 @@ protected RackConfig getConfig() { * @param level the logger level * @param message the log message */ - protected void log(final RackLogger.Level level, final String message) { - getContextBang().log(level, message); - } - - @Deprecated - protected void log(final String level, final String message) { + protected void log(final RackLogger.Level level, final CharSequence message) { getContextBang().log(level, message); } @@ -184,12 +179,7 @@ protected void log(final String level, final String message) { * @param message the log message * @param e the exception raised */ - protected void log(final RackLogger.Level level, final String message, Exception e) { - getContextBang().log(level, message, e); - } - - @Deprecated - protected void log(final String level, final String message, Exception e) { + protected void log(final RackLogger.Level level, final CharSequence message, Exception e) { getContextBang().log(level, message, e); } diff --git a/src/main/java/org/jruby/rack/RackContext.java b/src/main/java/org/jruby/rack/RackContext.java index 96d4ecbd..55105085 100644 --- a/src/main/java/org/jruby/rack/RackContext.java +++ b/src/main/java/org/jruby/rack/RackContext.java @@ -15,5 +15,4 @@ public interface RackContext extends RackLogger { RackConfig getConfig(); /// NOTE: deprecate ? String getServerInfo(); - // TODO more methods from ServletContext here ?! } diff --git a/src/main/java/org/jruby/rack/RackLogger.java b/src/main/java/org/jruby/rack/RackLogger.java index 2f30261f..91a22fde 100644 --- a/src/main/java/org/jruby/rack/RackLogger.java +++ b/src/main/java/org/jruby/rack/RackLogger.java @@ -18,23 +18,26 @@ enum Level { boolean isEnabled(final Level level) ; - void log(Level level, String message) ; - void log(Level level, String message, Throwable ex) ; + void log(Level level, CharSequence message) ; - default void log(String message) { + void log(Level level, CharSequence message, Throwable ex) ; + + default void log(CharSequence message) { log(Level.INFO, message); } - default void log(String message, Throwable ex) { + default void log(CharSequence message, Throwable ex) { log(Level.ERROR, message, ex); } - default void log(String level, String message) { - log(Level.valueOf(level), message); + @Deprecated + default void log(Level level, String message) { + log(level, (CharSequence) message); } - default void log(String level, String message, Throwable ex) { - log(Level.valueOf(level), message, ex); + @Deprecated + default void log(Level level, String message, Throwable ex) { + log(level, (CharSequence) message, ex); } abstract class Base implements RackLogger { diff --git a/src/main/java/org/jruby/rack/RackServletContextListener.java b/src/main/java/org/jruby/rack/RackServletContextListener.java index cf16d34d..ef6380e7 100644 --- a/src/main/java/org/jruby/rack/RackServletContextListener.java +++ b/src/main/java/org/jruby/rack/RackServletContextListener.java @@ -16,7 +16,6 @@ import org.jruby.rack.servlet.ServletRackContext; import static org.jruby.rack.DefaultRackConfig.isThrowInitException; -import static org.jruby.rack.RackLogger.Level.*; /** * Web application lifecycle listener. @@ -100,7 +99,7 @@ protected void handleInitializationException( throw RackInitializationException.wrap(e); } // NOTE: factory should have already logged the error ... - rackContext.log(ERROR, "initialization failed", e); + rackContext.log("initialization failed", e); } } diff --git a/src/main/java/org/jruby/rack/embed/Context.java b/src/main/java/org/jruby/rack/embed/Context.java index 41350b72..d6a7b322 100644 --- a/src/main/java/org/jruby/rack/embed/Context.java +++ b/src/main/java/org/jruby/rack/embed/Context.java @@ -69,58 +69,48 @@ public void setLevel(Level level) { } @Override - public void log(String message) { + public void log(CharSequence message) { logger.log(message); } @Override - public void log(String message, Throwable ex) { + public void log(CharSequence message, Throwable ex) { logger.log(message, ex); } @Override - public void log(Level level, String message) { + public void log(Level level, CharSequence message) { if ( isEnabled(level) ) logger.log(level, message); } @Override - public void log(Level level, String message, Throwable ex) { + public void log(Level level, CharSequence message, Throwable ex) { if ( isEnabled(level) ) logger.log(level, message, ex); } - @Override @Deprecated - public void log(String level, String message) { - log(Level.valueOf(level), message); - } - - @Override @Deprecated - public void log(String level, String message, Throwable ex) { - log(Level.valueOf(level), message, ex); - } - @Override public boolean isEnabled(Level level) { if ( level == null || this.level == null ) return true; return this.level.ordinal() <= level.ordinal(); } - - private class DefaultLogger extends RackLogger.Base { @Override - public void log(Level level, String message) { + public void log(Level level, CharSequence message) { final PrintStream out = config.getOut(); out.print(level); out.print(": "); printMessage(out, message); + out.flush(); } @Override - public void log(Level level, String message, Throwable ex) { + public void log(Level level, CharSequence message, Throwable ex) { final PrintStream err = config.getErr(); err.print(level); err.print(": "); printMessage(err, message); ex.printStackTrace(err); + err.flush(); } @Override diff --git a/src/main/java/org/jruby/rack/ext/Logger.java b/src/main/java/org/jruby/rack/ext/Logger.java index b99e03ca..21c5f741 100644 --- a/src/main/java/org/jruby/rack/ext/Logger.java +++ b/src/main/java/org/jruby/rack/ext/Logger.java @@ -388,11 +388,11 @@ private boolean add(final int severity, final ThreadContext context, else if ( msg instanceof RubyException ) { // print backtrace for error final RubyException error = (RubyException) msg; error.prepareIntegratedBacktrace(context, null); - doLog( loggerLevel, ExceptionUtils.formatError(error).toString() ); + doLog( loggerLevel, ExceptionUtils.formatError(error) ); return true; } // @logdev.write(format_message(format_severity(severity), Time.now, progname, message)) - if ( ! msg.isNil() ) doLog( loggerLevel, msg.asString() ); // TODO CharSequence ?! + if ( ! msg.isNil() ) doLog( loggerLevel, msg.asString() ); return true; } @@ -403,7 +403,8 @@ else if ( msg instanceof RubyException ) { // print backtrace for error @JRubyMethod(name = "<<") public IRubyObject append(final ThreadContext context, final IRubyObject msg) { final RubyString msgString = msg.asString(); - doLog(msgString); return msgString.rubyLength(context); + doLog(msgString); + return msgString.rubyLength(context); } // private @@ -462,16 +463,12 @@ public T toJava(Class target) { return super.toJava(target); } - private void doLog(RackLogger.Level level, String message) { + private void doLog(RackLogger.Level level, CharSequence message) { logger.log( level, message ); } - private void doLog(RackLogger.Level level, RubyString message) { - logger.log( level, message.toString() ); - } - private void doLog(RubyString message) { - logger.log( message.toString() ); + logger.log( message ); } // LoggerSilence API : diff --git a/src/main/java/org/jruby/rack/logging/CommonsLoggingLogger.java b/src/main/java/org/jruby/rack/logging/CommonsLoggingLogger.java index 731b9a3a..16ec5f96 100644 --- a/src/main/java/org/jruby/rack/logging/CommonsLoggingLogger.java +++ b/src/main/java/org/jruby/rack/logging/CommonsLoggingLogger.java @@ -46,7 +46,7 @@ public boolean isEnabled(Level level) { } @Override - public void log(Level level, String message) { + public void log(Level level, CharSequence message) { if ( level == null ) { logger.info(message); return; } switch ( level ) { case DEBUG: logger.debug(message); break; @@ -58,7 +58,7 @@ public void log(Level level, String message) { } @Override - public void log(Level level, String message, Throwable ex) { + public void log(Level level, CharSequence message, Throwable ex) { if ( level == null ) { logger.error(message, ex); return; } switch ( level ) { case DEBUG: logger.debug(message, ex); break; diff --git a/src/main/java/org/jruby/rack/logging/JulLogger.java b/src/main/java/org/jruby/rack/logging/JulLogger.java index 94ef209d..4d91710e 100644 --- a/src/main/java/org/jruby/rack/logging/JulLogger.java +++ b/src/main/java/org/jruby/rack/logging/JulLogger.java @@ -64,13 +64,13 @@ public boolean isEnabled(Level level) { } @Override - public void log(Level level, String message) { - logger.log( mapLevel(level, java.util.logging.Level.INFO), message ); + public void log(Level level, CharSequence message) { + logger.log( mapLevel(level, java.util.logging.Level.INFO), message.toString() ); } @Override - public void log(Level level, String message, Throwable e) { - logger.log( mapLevel(level, java.util.logging.Level.SEVERE), message, e ); + public void log(Level level, CharSequence message, Throwable e) { + logger.log( mapLevel(level, java.util.logging.Level.SEVERE), message.toString(), e ); } private static java.util.logging.Level mapLevel( diff --git a/src/main/java/org/jruby/rack/logging/OutputStreamLogger.java b/src/main/java/org/jruby/rack/logging/OutputStreamLogger.java index c20be662..c82ad222 100644 --- a/src/main/java/org/jruby/rack/logging/OutputStreamLogger.java +++ b/src/main/java/org/jruby/rack/logging/OutputStreamLogger.java @@ -60,17 +60,17 @@ public void setLevel(Level level) { } @Override - public void log(String message) { + public void log(CharSequence message) { doLog(message); } @Override - public void log(String message, Throwable ex) { + public void log(CharSequence message, Throwable ex) { doLog(message, ex); } @Override - public void log(Level level, String message) { + public void log(Level level, CharSequence message) { if ( ! isEnabled(level) ) return; printLevel(this, level, out); doLog(message); @@ -82,13 +82,13 @@ private void doLog(final CharSequence message) { } @Override - public void log(Level level, String message, Throwable ex) { + public void log(Level level, CharSequence message, Throwable ex) { if ( ! isEnabled(level) ) return; printLevel(this, level, out); doLog(message, ex); } - private void doLog(final String message, final Throwable ex) { + private void doLog(final CharSequence message, final Throwable ex) { printMessage(out, message); ex.printStackTrace(out); out.flush(); diff --git a/src/main/java/org/jruby/rack/logging/ServletContextLogger.java b/src/main/java/org/jruby/rack/logging/ServletContextLogger.java index c8d8e056..4378fe38 100644 --- a/src/main/java/org/jruby/rack/logging/ServletContextLogger.java +++ b/src/main/java/org/jruby/rack/logging/ServletContextLogger.java @@ -20,23 +20,23 @@ public ServletContextLogger(ServletContext context) { } @Override - public void log(String message) { - context.log(message); + public void log(CharSequence message) { + context.log(message.toString()); } @Override - public void log(String message, Throwable ex) { - context.log(message, ex); + public void log(CharSequence message, Throwable ex) { + context.log(message.toString(), ex); } @Override - public void log(Level level, String message) { - if ( isEnabled(level) ) context.log(message); + public void log(Level level, CharSequence message) { + if ( isEnabled(level) ) context.log(message.toString()); } @Override - public void log(Level level, String message, Throwable ex) { - if ( isEnabled(level) ) context.log(message, ex); + public void log(Level level, CharSequence message, Throwable ex) { + if ( isEnabled(level) ) context.log(message.toString(), ex); } @Override diff --git a/src/main/java/org/jruby/rack/logging/Slf4jLogger.java b/src/main/java/org/jruby/rack/logging/Slf4jLogger.java index 81d68543..4acab7ab 100644 --- a/src/main/java/org/jruby/rack/logging/Slf4jLogger.java +++ b/src/main/java/org/jruby/rack/logging/Slf4jLogger.java @@ -50,26 +50,26 @@ public boolean isEnabled(Level level) { } @Override - public void log(Level level, String message) { - if ( level == null ) { logger.info(message); return; } + public void log(Level level, CharSequence message) { + if ( level == null ) { logger.info(message.toString()); return; } switch ( level ) { - case DEBUG: logger.debug(message); break; - case INFO: logger.info(message); break; - case WARN: logger.warn(message); break; - case ERROR: logger.error(message); break; - case FATAL: logger.error(message); break; + case DEBUG: logger.debug(message.toString()); break; + case INFO: logger.info(message.toString()); break; + case WARN: logger.warn(message.toString()); break; + case ERROR: logger.error(message.toString()); break; + case FATAL: logger.error(message.toString()); break; } } @Override - public void log(Level level, String message, Throwable ex) { - if ( level == null ) { logger.error(message, ex); return; } + public void log(Level level, CharSequence message, Throwable ex) { + if ( level == null ) { logger.error(message.toString(), ex); return; } switch ( level ) { - case DEBUG: logger.debug(message, ex); break; - case INFO: logger.info(message, ex); break; - case WARN: logger.warn(message, ex); break; - case ERROR: logger.error(message, ex); break; - case FATAL: logger.error(message, ex); break; + case DEBUG: logger.debug(message.toString(), ex); break; + case INFO: logger.info(message.toString(), ex); break; + case WARN: logger.warn(message.toString(), ex); break; + case ERROR: logger.error(message.toString(), ex); break; + case FATAL: logger.error(message.toString(), ex); break; } } diff --git a/src/main/java/org/jruby/rack/servlet/DefaultServletRackContext.java b/src/main/java/org/jruby/rack/servlet/DefaultServletRackContext.java index 0627081b..6a4f1c18 100644 --- a/src/main/java/org/jruby/rack/servlet/DefaultServletRackContext.java +++ b/src/main/java/org/jruby/rack/servlet/DefaultServletRackContext.java @@ -213,32 +213,22 @@ public boolean isEnabled(Level level) { } @Override - public void log(String message) { + public void log(CharSequence message) { logger.log(message); } @Override - public void log(String message, Throwable e) { + public void log(CharSequence message, Throwable e) { logger.log(message, e); } - @Override @Deprecated - public void log(String level, String message) { - logger.log(level, message); - } - - @Override @Deprecated - public void log(String level, String message, Throwable e) { - logger.log(level, message, e); - } - @Override - public void log(Level level, String message) { + public void log(Level level, CharSequence message) { logger.log(level, message); } @Override - public void log(Level level, String message, Throwable e) { + public void log(Level level, CharSequence message, Throwable e) { logger.log(level, message, e); } diff --git a/src/spec/java/org/jruby/rack/logging/RaiseLogger.java b/src/spec/java/org/jruby/rack/logging/RaiseLogger.java index 188d163c..e71a9252 100644 --- a/src/spec/java/org/jruby/rack/logging/RaiseLogger.java +++ b/src/spec/java/org/jruby/rack/logging/RaiseLogger.java @@ -83,30 +83,33 @@ private boolean isRaise(final Level level) { } @Override - public void log(Level level, String message) { + public void log(Level level, CharSequence message) { if ( isEnabled(level) ) { - out.println(level + " : " + message); + out.print(level + " : "); + out.println(message); } if ( isRaise(level) ) { - throw new RuntimeException(message); + throw new RuntimeException(message.toString()); } } @Override - public void log(Level level, String message, Throwable ex) { + public void log(Level level, CharSequence message, Throwable ex) { if ( isEnabled(level) ) { if ( level.ordinal() >= Level.ERROR.ordinal() ) { - err.println(level + " : " + message); + err.print(level + " : "); + err.println(message); ex.printStackTrace(err); } else { - out.println(level + " : " + message); + out.print(level + " : "); + out.println(message); ex.printStackTrace(out); } } if ( isRaise(level) ) { if ( ex instanceof RuntimeException ) throw (RuntimeException) ex; - throw new RuntimeException(message, ex); + throw new RuntimeException(message.toString(), ex); } } diff --git a/src/spec/java/org/jruby/rack/mock/RackLoggingMockServletContext.java b/src/spec/java/org/jruby/rack/mock/RackLoggingMockServletContext.java index 4e4d2438..b937c51b 100644 --- a/src/spec/java/org/jruby/rack/mock/RackLoggingMockServletContext.java +++ b/src/spec/java/org/jruby/rack/mock/RackLoggingMockServletContext.java @@ -30,22 +30,16 @@ public RackLoggingMockServletContext(String resourceBasePath) { private static class NullLogger extends RackLogger.Base { - @Override - public void log(String message) { /* NOOP */ } - - @Override - public void log(String message, Throwable ex) { /* NOOP */ } - @Override public boolean isEnabled(Level level) { return false; } @Override - public void log(Level level, String message) { /* NOOP */ } + public void log(Level level, CharSequence message) { /* NOOP */ } @Override - public void log(Level level, String message, Throwable ex) { /* NOOP */ } + public void log(Level level, CharSequence message, Throwable ex) { /* NOOP */ } @Override public Level getLevel() {