in logback-classic/src/main/scala/com/twitter/server/handler/logback/classic/LoggingHandler.scala [80:136]
private def respond(request: Request): Future[Response] = {
try {
val toSetLoggerOption = Option(request.getParam("logger"))
val message = toSetLoggerOption match {
case Some(loggerString) =>
try {
val toSetLevel = request.getParam("level")
val isJul = request.getBooleanParam("isJul", false)
if (toSetLevel == null || toSetLevel.isEmpty) {
throw new IllegalArgumentException(
s"Unable to set log level for $loggerString -- undefined logging level!"
)
} else if (toSetLevel == "null") {
val logger = LoggerFactory.getLogger(loggerString).asInstanceOf[Logger]
logger.setLevel(null)
val message = s"Removed level override for ${logger.getName}"
info(message)
escapeHtml(message)
} else {
val message = if (!isJul) {
val logger = LoggerFactory.getLogger(loggerString).asInstanceOf[Logger]
logger.setLevel(Level.valueOf(toSetLevel))
s"""Changed ${logger.getName} to Level.$toSetLevel"""
} else {
val julLogger = julLogManager.getLogger(loggerString)
julLogger.setLevel(javalog.Level.parse(toSetLevel))
s"""Changed ${julLogger.getName} to Level.$toSetLevel"""
}
info(message)
escapeHtml(message)
}
} catch {
case e: Exception =>
warn(e.getMessage)
escapeHtml(e.getMessage)
}
case _ => ""
}
val showOverriddenOnly = request.getBooleanParam("overridden", false)
val filteredLoggers = if (showOverriddenOnly) {
loggers
.filter(_.getLevel != null)
.filter(_.getName != org.slf4j.Logger.ROOT_LOGGER_NAME)
} else loggers
val html = renderHtml(filteredLoggers.toSeq, julLoggers, message, showOverriddenOnly)
newResponse(
contentType = "text/html;charset=UTF-8",
content = Buf.Utf8(html)
)
} catch {
case e: Throwable =>
newResponse(contentType = "text/html;charset=UTF-8", content = Buf.Utf8(e.getMessage))
}
}