From 0f71f1e1c559bfebc20dad4ae979e7f6b58b7acf Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Sun, 28 Apr 2019 14:53:56 +0200 Subject: feat: Provide per-actor logging This change adds an actor-specific logging instance to ActorContext, which allows consumers to log messages via the SLF4J API. --- .../com/atlarge/odcsim/engine/omega/OmegaActorSystem.kt | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'odcsim-engine-omega/src') diff --git a/odcsim-engine-omega/src/main/kotlin/com/atlarge/odcsim/engine/omega/OmegaActorSystem.kt b/odcsim-engine-omega/src/main/kotlin/com/atlarge/odcsim/engine/omega/OmegaActorSystem.kt index 9899a360..881eb98d 100644 --- a/odcsim-engine-omega/src/main/kotlin/com/atlarge/odcsim/engine/omega/OmegaActorSystem.kt +++ b/odcsim-engine-omega/src/main/kotlin/com/atlarge/odcsim/engine/omega/OmegaActorSystem.kt @@ -35,7 +35,8 @@ import com.atlarge.odcsim.PostStop import com.atlarge.odcsim.PreStart import com.atlarge.odcsim.Signal import com.atlarge.odcsim.internal.BehaviorInterpreter -import mu.KotlinLogging +import com.atlarge.odcsim.internal.logging.LoggerImpl +import org.slf4j.Logger import java.util.PriorityQueue import kotlin.math.max @@ -76,11 +77,6 @@ class OmegaActorSystem(root: Behavior, override val name: String) */ private val registry: MutableMap> = HashMap() - /** - * A [KotlinLogging] instance that writes logs to a SLF4J implementation. - */ - private val logger = KotlinLogging.logger {} - init { registry[path] = Actor(this, root) schedule(this, PreStart, .0) @@ -144,6 +140,11 @@ class OmegaActorSystem(root: Behavior, override val name: String) override val time: Instant get() = this@OmegaActorSystem.time + override val system: ActorSystem<*> + get() = this@OmegaActorSystem + + override val log: Logger by lazy(LazyThreadSafetyMode.NONE) { LoggerImpl(this) } + override fun send(ref: ActorRef, msg: U, after: Duration) = schedule(ref, msg, after) override fun spawn(behavior: Behavior, name: String): ActorRef { @@ -232,7 +233,7 @@ class OmegaActorSystem(root: Behavior, override val name: String) } catch (e: Exception) { // Forcefully stop the actor if it crashed stop() - logger.error(e) { "Unhandled exception in actor $path" } + log.error("Unhandled exception in actor $path", e) null } } -- cgit v1.2.3