in management-loglevels-log4j2/src/main/scala/org/apache/pekko/management/loglevels/log4j2/LogLevelRoutes.scala [48:103]
override def routes(settings: ManagementRouteProviderSettings): Route = {
pathPrefix("loglevel") {
extractClientIP { clientIp =>
path("log4j2") {
pathEndOrSingleSlash {
put {
parameters(
"level".as[Level].withDefault(Level.INFO),
"logger" ? LogManager.ROOT_LOGGER_NAME) { (level, logger) =>
if (settings.readOnly) {
complete(StatusCodes.Forbidden)
} else {
log.info(
s"Log level for [${if (logger.equals(LogManager.ROOT_LOGGER_NAME)) "Root"
else logger}] set to [$level] through Pekko Management loglevel endpoint from [$clientIp]")
val context = LogManager.getContext(false).asInstanceOf[LoggerContext]
val config = context.getConfiguration
val loggerConfig = config.getLoggerConfig(logger)
loggerConfig.setLevel(level)
context.updateLoggers()
complete(StatusCodes.OK)
}
}
} ~
get {
parameters(
"logger" ? LogManager.ROOT_LOGGER_NAME) { logger =>
val context = LogManager.getContext(false).asInstanceOf[LoggerContext]
val config = context.getConfiguration
val loggerConfig = config.getLoggerConfig(logger)
complete(loggerConfig.getLevel.toString)
}
}
}
} ~
path("pekko") {
get {
complete(classicLogLevelName(system.eventStream.logLevel))
} ~
put {
if (settings.readOnly)
complete(StatusCodes.Forbidden)
else {
parameter("level".as[ClassicLogging.LogLevel]) { level =>
log.info(
"Pekko loglevel set to [{}] through Pekko Management loglevel endpoint from [{}]",
Array[Object](classicLogLevelName(level), clientIp): _*)
system.eventStream.setLogLevel(level)
complete(StatusCodes.OK)
}
}
}
}
}
}