Fix: Added new logging methods required for Jetty 7.1.x

+ format(msg, arg1, arg2) was refactored to support any number of args
+ The actual logger methods use Array[AnyRef] instead of AnyRef* because
  the latter compiles to scala.Seq and the former to Object[]
This commit is contained in:
Joonas Javanainen 2010-05-24 03:15:40 +08:00 committed by Mark Harrah
parent 600053bf2c
commit 7fa3a7df31
1 changed files with 11 additions and 12 deletions

View File

@ -121,6 +121,9 @@ private class JettyLoggerBase(delegate: Logger)
def info(msg: String, arg0: AnyRef, arg1: AnyRef) { delegate.info(format(msg, arg0, arg1)) } def info(msg: String, arg0: AnyRef, arg1: AnyRef) { delegate.info(format(msg, arg0, arg1)) }
def debug(msg: String, arg0: AnyRef, arg1: AnyRef) { delegate.debug(format(msg, arg0, arg1)) } def debug(msg: String, arg0: AnyRef, arg1: AnyRef) { delegate.debug(format(msg, arg0, arg1)) }
def warn(msg: String, arg0: AnyRef, arg1: AnyRef) { delegate.warn(format(msg, arg0, arg1)) } def warn(msg: String, arg0: AnyRef, arg1: AnyRef) { delegate.warn(format(msg, arg0, arg1)) }
def info(msg: String, args: Array[AnyRef]) { delegate.info(format(msg, args: _*)) }
def debug(msg: String, args: Array[AnyRef]) { delegate.debug(format(msg, args: _*)) }
def warn(msg: String, args: Array[AnyRef]) { delegate.warn(format(msg, args: _*)) }
def warn(msg: String, th: Throwable) def warn(msg: String, th: Throwable)
{ {
delegate.warn(msg) delegate.warn(msg)
@ -131,19 +134,15 @@ private class JettyLoggerBase(delegate: Logger)
delegate.debug(msg) delegate.debug(msg)
delegate.trace(th) delegate.trace(th)
} }
private def format(msg: String, arg0: AnyRef, arg1: AnyRef) = private def format(msg: String, args: AnyRef*) =
{ {
def toString(arg: AnyRef) = if(arg == null) "" else arg.toString def toString(arg: AnyRef) = if(arg == null) "" else arg.toString
val pieces = msg.split("""\{\}""", 3) val pieces = msg.split("""\{\}""", args.length + 1).toList
if(pieces.length == 1) val argStrs = args.map(toString).toList ::: List("")
pieces(0) pieces.zip(argStrs).foldLeft(new StringBuilder) { (sb, pair) =>
else val (piece, argStr) = pair
{ if (piece.isEmpty) sb
val base = pieces(0) + toString(arg0) + pieces(1) else sb.append(piece).append(argStr)
if(pieces.length == 2) }.toString
base
else
base + toString(arg1) + pieces(2)
}
} }
} }