+slf #16630 Add the actor system name to the Slf4jLogger context
This commit is contained in:
parent
c56d670c03
commit
e49ea9b5e4
5 changed files with 34 additions and 3 deletions
|
|
@ -305,7 +305,7 @@ the first case and ``LoggerFactory.getLogger(String s)`` in the second).
|
||||||
|
|
||||||
final LoggingAdapter log = Logging.getLogger(system.eventStream(), "my.string");
|
final LoggingAdapter log = Logging.getLogger(system.eventStream(), "my.string");
|
||||||
|
|
||||||
Logging Thread and Akka Source in MDC
|
Logging Thread, Akka Source and Actor System in MDC
|
||||||
-------------------------------------
|
-------------------------------------
|
||||||
|
|
||||||
Since the logging is done asynchronously the thread in which the logging was performed is captured in
|
Since the logging is done asynchronously the thread in which the logging was performed is captured in
|
||||||
|
|
@ -335,6 +335,15 @@ information is available in the MDC with attribute name ``akkaSource``::
|
||||||
</encoder>
|
</encoder>
|
||||||
</appender>
|
</appender>
|
||||||
|
|
||||||
|
Finally, the actor system in which the logging was performed
|
||||||
|
is available in the MDC with attribute name ``sourceActorSystem``::
|
||||||
|
|
||||||
|
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
||||||
|
<encoder>
|
||||||
|
<pattern>%date{ISO8601} %-5level %logger{36} %X{sourceActorSystem} - %msg%n</pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
|
||||||
For more details on what this attribute contains—also for non-actors—please see
|
For more details on what this attribute contains—also for non-actors—please see
|
||||||
`How to Log`_.
|
`How to Log`_.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -341,7 +341,7 @@ the first case and ``LoggerFactory.getLogger(s: String)`` in the second).
|
||||||
|
|
||||||
val log = Logging(system.eventStream, "my.nice.string")
|
val log = Logging(system.eventStream, "my.nice.string")
|
||||||
|
|
||||||
Logging Thread and Akka Source in MDC
|
Logging Thread, Akka Source and Actor System in MDC
|
||||||
-------------------------------------
|
-------------------------------------
|
||||||
|
|
||||||
Since the logging is done asynchronously the thread in which the logging was performed is captured in
|
Since the logging is done asynchronously the thread in which the logging was performed is captured in
|
||||||
|
|
@ -371,6 +371,15 @@ information is available in the MDC with attribute name ``akkaSource``::
|
||||||
</encoder>
|
</encoder>
|
||||||
</appender>
|
</appender>
|
||||||
|
|
||||||
|
Finally, the actor system in which the logging was performed
|
||||||
|
is available in the MDC with attribute name ``sourceActorSystem``::
|
||||||
|
|
||||||
|
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
||||||
|
<encoder>
|
||||||
|
<pattern>%date{ISO8601} %-5level %logger{36} %X{sourceActorSystem} - %msg%n</pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
|
||||||
For more details on what this attribute contains—also for non-actors—please see
|
For more details on what this attribute contains—also for non-actors—please see
|
||||||
`How to Log`_.
|
`How to Log`_.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -56,6 +56,7 @@ object Logger {
|
||||||
class Slf4jLogger extends Actor with SLF4JLogging {
|
class Slf4jLogger extends Actor with SLF4JLogging {
|
||||||
|
|
||||||
val mdcThreadAttributeName = "sourceThread"
|
val mdcThreadAttributeName = "sourceThread"
|
||||||
|
val mdcActorSystemAttributeName = "sourceActorSystem"
|
||||||
val mdcAkkaSourceAttributeName = "akkaSource"
|
val mdcAkkaSourceAttributeName = "akkaSource"
|
||||||
val mdcAkkaTimestamp = "akkaTimestamp"
|
val mdcAkkaTimestamp = "akkaTimestamp"
|
||||||
|
|
||||||
|
|
@ -88,11 +89,13 @@ class Slf4jLogger extends Actor with SLF4JLogging {
|
||||||
MDC.put(mdcAkkaSourceAttributeName, logSource)
|
MDC.put(mdcAkkaSourceAttributeName, logSource)
|
||||||
MDC.put(mdcThreadAttributeName, logEvent.thread.getName)
|
MDC.put(mdcThreadAttributeName, logEvent.thread.getName)
|
||||||
MDC.put(mdcAkkaTimestamp, formatTimestamp(logEvent.timestamp))
|
MDC.put(mdcAkkaTimestamp, formatTimestamp(logEvent.timestamp))
|
||||||
|
MDC.put(mdcActorSystemAttributeName, actorSystemName)
|
||||||
logEvent.mdc foreach { case (k, v) ⇒ MDC.put(k, String.valueOf(v)) }
|
logEvent.mdc foreach { case (k, v) ⇒ MDC.put(k, String.valueOf(v)) }
|
||||||
try logStatement finally {
|
try logStatement finally {
|
||||||
MDC.remove(mdcAkkaSourceAttributeName)
|
MDC.remove(mdcAkkaSourceAttributeName)
|
||||||
MDC.remove(mdcThreadAttributeName)
|
MDC.remove(mdcThreadAttributeName)
|
||||||
MDC.remove(mdcAkkaTimestamp)
|
MDC.remove(mdcAkkaTimestamp)
|
||||||
|
MDC.remove(mdcActorSystemAttributeName)
|
||||||
logEvent.mdc.keys.foreach(k ⇒ MDC.remove(k))
|
logEvent.mdc.keys.foreach(k ⇒ MDC.remove(k))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -104,6 +107,8 @@ class Slf4jLogger extends Actor with SLF4JLogging {
|
||||||
*/
|
*/
|
||||||
protected def formatTimestamp(timestamp: Long): String =
|
protected def formatTimestamp(timestamp: Long): String =
|
||||||
Helpers.currentTimeMillisToUTCString(timestamp)
|
Helpers.currentTimeMillisToUTCString(timestamp)
|
||||||
|
|
||||||
|
private val actorSystemName = context.system.name
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
</appender>
|
</appender>
|
||||||
<appender name="TEST" class="akka.event.slf4j.Slf4jLoggerSpec$TestAppender">
|
<appender name="TEST" class="akka.event.slf4j.Slf4jLoggerSpec$TestAppender">
|
||||||
<encoder>
|
<encoder>
|
||||||
<pattern>%date{ISO8601} level=[%level] logger=[%logger] akkaSource=[%X{akkaSource}] sourceThread=[%X{sourceThread}] mdc=[ticket-#%X{ticketNumber}: %X{ticketDesc}] - msg=[%msg]%n----%n</pattern>
|
<pattern>%date{ISO8601} level=[%level] logger=[%logger] akkaSource=[%X{akkaSource}] sourceActorSystem=[%X{sourceActorSystem}] sourceThread=[%X{sourceThread}] mdc=[ticket-#%X{ticketNumber}: %X{ticketDesc}] - msg=[%msg]%n----%n</pattern>
|
||||||
</encoder>
|
</encoder>
|
||||||
</appender>
|
</appender>
|
||||||
<logger name="akka.event.slf4j.Slf4jLoggingFilterSpec$DebugLevelProducer"
|
<logger name="akka.event.slf4j.Slf4jLoggingFilterSpec$DebugLevelProducer"
|
||||||
|
|
|
||||||
|
|
@ -156,6 +156,14 @@ class Slf4jLoggerSpec extends AkkaSpec(Slf4jLoggerSpec.config) with BeforeAndAft
|
||||||
s should include("akkaSource=[Slf4jLoggerSpec$MyLogSource]")
|
s should include("akkaSource=[Slf4jLoggerSpec$MyLogSource]")
|
||||||
s should include("logger=[akka.event.slf4j.Slf4jLoggerSpec$MyLogSource]")
|
s should include("logger=[akka.event.slf4j.Slf4jLoggerSpec$MyLogSource]")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
"include actorSystem name in sourceActorSystem" in {
|
||||||
|
val log = Logging(system.eventStream, classOf[MyLogSource])
|
||||||
|
log.info("test")
|
||||||
|
awaitCond(outputString.contains("----"), 5 seconds)
|
||||||
|
val s = outputString
|
||||||
|
s should include("sourceActorSystem=[Slf4jLoggerSpec]")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue