Create a separate trait for filter with marker
to ensure binary compatibility Signed-off-by: Gaël Bréard <gael.breard@orange.com>
This commit is contained in:
parent
fee21cf320
commit
aa74afb8b1
4 changed files with 38 additions and 18 deletions
|
|
@ -7,7 +7,7 @@ package akka.actor.typed.internal.adapter
|
|||
import akka.actor.typed.{ LogMarker, Logger }
|
||||
import akka.annotation.InternalApi
|
||||
import akka.event.Logging._
|
||||
import akka.event.{ LoggingBus, LoggingFilter, LogMarker ⇒ UntypedLM }
|
||||
import akka.event.{ LoggingBus, LoggingFilter, LoggingFilterWithMarker, LogMarker ⇒ UntypedLM }
|
||||
import akka.util.OptionVal
|
||||
|
||||
import scala.collection.JavaConverters._
|
||||
|
|
@ -358,18 +358,17 @@ private[akka] abstract class AbstractLogger extends Logger {
|
|||
* INTERNAL API
|
||||
*/
|
||||
@InternalApi
|
||||
private[akka] final class LoggerAdapterImpl(bus: LoggingBus, logClass: Class[_], logSource: String, loggingFilter: LoggingFilter) extends AbstractLogger {
|
||||
private[akka] final class LoggerAdapterImpl(bus: LoggingBus, logClass: Class[_], logSource: String, loggingFilter: LoggingFilterWithMarker) extends AbstractLogger {
|
||||
|
||||
override def isErrorEnabled = loggingFilter.isErrorEnabled(logClass, logSource)
|
||||
override def isWarningEnabled = loggingFilter.isWarningEnabled(logClass, logSource)
|
||||
override def isInfoEnabled = loggingFilter.isInfoEnabled(logClass, logSource)
|
||||
override def isDebugEnabled = loggingFilter.isDebugEnabled(logClass, logSource)
|
||||
|
||||
override def isErrorEnabled(marker: LogMarker): Boolean = loggingFilter.isErrorEnabled(logClass,logSource,marker.asInstanceOf[UntypedLM])
|
||||
override def isWarningEnabled(marker: LogMarker): Boolean = loggingFilter.isWarningEnabled(logClass,logSource,marker.asInstanceOf[UntypedLM])
|
||||
override def isInfoEnabled(marker: LogMarker): Boolean = loggingFilter.isInfoEnabled(logClass,logSource,marker.asInstanceOf[UntypedLM])
|
||||
override def isDebugEnabled(marker: LogMarker): Boolean = loggingFilter.isDebugEnabled(logClass,logSource,marker.asInstanceOf[UntypedLM])
|
||||
|
||||
override def isErrorEnabled(marker: LogMarker): Boolean = loggingFilter.isErrorEnabled(logClass, logSource, marker.asInstanceOf[UntypedLM])
|
||||
override def isWarningEnabled(marker: LogMarker): Boolean = loggingFilter.isWarningEnabled(logClass, logSource, marker.asInstanceOf[UntypedLM])
|
||||
override def isInfoEnabled(marker: LogMarker): Boolean = loggingFilter.isInfoEnabled(logClass, logSource, marker.asInstanceOf[UntypedLM])
|
||||
override def isDebugEnabled(marker: LogMarker): Boolean = loggingFilter.isDebugEnabled(logClass, logSource, marker.asInstanceOf[UntypedLM])
|
||||
|
||||
override def withMdc(mdc: Map[String, Any]): Logger = {
|
||||
val mdcAdapter = new LoggerAdapterImpl(bus, logClass, logSource, loggingFilter)
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ import java.util.concurrent._
|
|||
import java.util.concurrent.atomic.AtomicReference
|
||||
|
||||
import com.typesafe.config.{ Config, ConfigFactory }
|
||||
import akka.event._
|
||||
import akka.event.{ LoggingFilterWithMarker, _ }
|
||||
import akka.dispatch._
|
||||
import akka.japi.Util.immutableSeq
|
||||
import akka.actor.dungeon.ChildrenContainer
|
||||
|
|
@ -652,7 +652,7 @@ abstract class ExtendedActorSystem extends ActorSystem {
|
|||
* Filter of log events that is used by the LoggingAdapter before
|
||||
* publishing log events to the eventStream
|
||||
*/
|
||||
def logFilter: LoggingFilter
|
||||
def logFilter: LoggingFilterWithMarker
|
||||
|
||||
/**
|
||||
* For debugging: traverse actor hierarchy and make string representation.
|
||||
|
|
@ -775,9 +775,14 @@ private[akka] class ActorSystemImpl(
|
|||
val eventStream = new EventStream(this, DebugEventStream)
|
||||
eventStream.startStdoutLogger(settings)
|
||||
|
||||
val logFilter: LoggingFilter = {
|
||||
val logFilter: LoggingFilterWithMarker = {
|
||||
val arguments = Vector(classOf[Settings] → settings, classOf[EventStream] → eventStream)
|
||||
dynamicAccess.createInstanceFor[LoggingFilter](LoggingFilter, arguments).get
|
||||
if (logFilter.isInstanceOf[LoggingFilterWithMarker]) {
|
||||
logFilter
|
||||
} else {
|
||||
new LoggingFilterWithMarkerWrapper(logFilter)
|
||||
}
|
||||
}
|
||||
|
||||
private[this] val markerLogging = new MarkerLoggingAdapter(eventStream, getClass.getName + "(" + name + ")", this.getClass, logFilter)
|
||||
|
|
|
|||
|
|
@ -1340,10 +1340,6 @@ trait LoggingAdapter {
|
|||
*/
|
||||
trait LoggingFilter {
|
||||
// for backward-compatibility reason implementation of method without marker only must work
|
||||
def isErrorEnabled(logClass: Class[_], logSource: String, marker: LogMarker): Boolean = isErrorEnabled(logClass, logSource)
|
||||
def isWarningEnabled(logClass: Class[_], logSource: String, marker: LogMarker): Boolean = isWarningEnabled(logClass, logSource)
|
||||
def isInfoEnabled(logClass: Class[_], logSource: String, marker: LogMarker): Boolean = isInfoEnabled(logClass, logSource)
|
||||
def isDebugEnabled(logClass: Class[_], logSource: String, marker: LogMarker): Boolean = isDebugEnabled(logClass, logSource)
|
||||
|
||||
def isErrorEnabled(logClass: Class[_], logSource: String): Boolean
|
||||
def isWarningEnabled(logClass: Class[_], logSource: String): Boolean
|
||||
|
|
@ -1351,12 +1347,32 @@ trait LoggingFilter {
|
|||
def isDebugEnabled(logClass: Class[_], logSource: String): Boolean
|
||||
}
|
||||
|
||||
trait LoggingFilterWithMarker extends LoggingFilter {
|
||||
def isErrorEnabled(logClass: Class[_], logSource: String, marker: LogMarker): Boolean = isErrorEnabled(logClass, logSource)
|
||||
|
||||
def isWarningEnabled(logClass: Class[_], logSource: String, marker: LogMarker): Boolean = isWarningEnabled(logClass, logSource)
|
||||
|
||||
def isInfoEnabled(logClass: Class[_], logSource: String, marker: LogMarker): Boolean = isInfoEnabled(logClass, logSource)
|
||||
|
||||
def isDebugEnabled(logClass: Class[_], logSource: String, marker: LogMarker): Boolean = isDebugEnabled(logClass, logSource)
|
||||
}
|
||||
|
||||
class LoggingFilterWithMarkerWrapper(loggingFilter: LoggingFilter) extends LoggingFilterWithMarker {
|
||||
override def isErrorEnabled(logClass: Class[_], logSource: String): Boolean = loggingFilter.isErrorEnabled(logClass, logSource)
|
||||
|
||||
override def isWarningEnabled(logClass: Class[_], logSource: String): Boolean = loggingFilter.isWarningEnabled(logClass, logSource)
|
||||
|
||||
override def isInfoEnabled(logClass: Class[_], logSource: String): Boolean = loggingFilter.isInfoEnabled(logClass, logSource)
|
||||
|
||||
override def isDebugEnabled(logClass: Class[_], logSource: String): Boolean = loggingFilter.isDebugEnabled(logClass, logSource)
|
||||
}
|
||||
|
||||
/**
|
||||
* Default [[LoggingFilter]] that uses the logLevel of the `eventStream`, which
|
||||
* initial value is defined in configuration. The logLevel `eventStream` can be
|
||||
* changed while the system is running.
|
||||
*/
|
||||
class DefaultLoggingFilter(logLevel: () ⇒ Logging.LogLevel) extends LoggingFilter {
|
||||
class DefaultLoggingFilter(logLevel: () ⇒ Logging.LogLevel) extends LoggingFilterWithMarker {
|
||||
|
||||
def this(settings: Settings, eventStream: EventStream) = this(() ⇒ eventStream.logLevel)
|
||||
|
||||
|
|
@ -1463,7 +1479,7 @@ class MarkerLoggingAdapter(
|
|||
override val bus: LoggingBus,
|
||||
override val logSource: String,
|
||||
override val logClass: Class[_],
|
||||
loggingFilter: LoggingFilter)
|
||||
loggingFilter: LoggingFilterWithMarker)
|
||||
extends BusLogging(bus, logSource, logClass, loggingFilter) {
|
||||
// TODO when breaking binary compatibility, these marker methods should become baked into LoggingAdapter itself
|
||||
|
||||
|
|
@ -1704,7 +1720,7 @@ final class DiagnosticMarkerBusLoggingAdapter(
|
|||
override val bus: LoggingBus,
|
||||
override val logSource: String,
|
||||
override val logClass: Class[_],
|
||||
loggingFilter: LoggingFilter)
|
||||
loggingFilter: LoggingFilterWithMarker)
|
||||
extends MarkerLoggingAdapter(bus, logSource, logClass, loggingFilter) with DiagnosticLoggingAdapter
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -136,7 +136,7 @@ class Slf4jLogger extends Actor with SLF4JLogging with RequiresMessageQueue[Logg
|
|||
* backend configuration (e.g. logback.xml) to filter log events before publishing
|
||||
* the log events to the `eventStream`.
|
||||
*/
|
||||
class Slf4jLoggingFilter(settings: ActorSystem.Settings, eventStream: EventStream) extends LoggingFilter {
|
||||
class Slf4jLoggingFilter(settings: ActorSystem.Settings, eventStream: EventStream) extends LoggingFilterWithMarker {
|
||||
def isErrorEnabled(logClass: Class[_], logSource: String) =
|
||||
(eventStream.logLevel >= ErrorLevel) && Logger(logClass, logSource).isErrorEnabled
|
||||
def isWarningEnabled(logClass: Class[_], logSource: String) =
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue