Skip to content

Instantly share code, notes, and snippets.

@reikje
Created January 26, 2017 11:19
Show Gist options
  • Save reikje/fbd37cea3f36f6bb74a6c688fa4af2f7 to your computer and use it in GitHub Desktop.
Save reikje/fbd37cea3f36f6bb74a6c688fa4af2f7 to your computer and use it in GitHub Desktop.
package com.github.rschatz
import ch.qos.logback.classic.turbo.TurboFilter
import ch.qos.logback.classic.{Level, Logger, LoggerContext}
import ch.qos.logback.core.spi.FilterReply
import org.slf4j.{LoggerFactory, Marker}
import com.github.rschatz.{LogLevelName, LogLevelOverride}
object BroadcastContextOverrideFilter extends TurboFilter {
override def decide(marker: Marker, logger: Logger, level: Level, format: String, params: Array[AnyRef], t: Throwable): FilterReply = {
LogLevelOverride.current.map { logLevelOverride =>
if (logLevelOverride.logLevelName == LogLevelName.ERROR && level.isGreaterOrEqual(Level.ERROR)) {
FilterReply.ACCEPT
} else if (logLevelOverride.logLevelName == LogLevelName.WARN && level.isGreaterOrEqual(Level.WARN)) {
FilterReply.ACCEPT
} else if (logLevelOverride.logLevelName == LogLevelName.INFO && level.isGreaterOrEqual(Level.INFO)) {
FilterReply.ACCEPT
} else if (logLevelOverride.logLevelName == LogLevelName.DEBUG && level.isGreaterOrEqual(Level.DEBUG)) {
FilterReply.ACCEPT
} else if (logLevelOverride.logLevelName == LogLevelName.TRACE) {
FilterReply.ACCEPT
} else {
// log event uses a level below the specified override
FilterReply.NEUTRAL
}
}.getOrElse {
// no override in broadcast context
FilterReply.NEUTRAL
}
}
override def isStarted: Boolean = true
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment