The idea is to filter the sources, replacing @<var>@ occurrences with the mapping for <var> (which is currently hard-coded). @@ -> @. In order to make this work, I had to move the doc sources one directory down (into akka-docs/rst) so that the filtered result could be in a sibling directory so that relative links (to _sphinx plugins or real code) would continue to work. While I was at it I also changed it so that WARNINGs and ERRORs are not swallowed into the debug dump anymore but printed at [warn] level (minimum). One piece of fallout is that the (online) html build is now run after the normal one, not in parallel.
99 lines
2.5 KiB
Scala
99 lines
2.5 KiB
Scala
/**
|
|
* Copyright (C) 2009-2012 Typesafe Inc. <http://www.typesafe.com>
|
|
*/
|
|
package docs.event
|
|
|
|
import akka.testkit.AkkaSpec
|
|
import akka.actor.Actor
|
|
import akka.actor.Props
|
|
|
|
object LoggingDocSpec {
|
|
|
|
//#my-actor
|
|
import akka.event.Logging
|
|
|
|
class MyActor extends Actor {
|
|
val log = Logging(context.system, this)
|
|
override def preStart() = {
|
|
log.debug("Starting")
|
|
}
|
|
override def preRestart(reason: Throwable, message: Option[Any]) {
|
|
log.error(reason, "Restarting due to [{}] when processing [{}]",
|
|
reason.getMessage, message.getOrElse(""))
|
|
}
|
|
def receive = {
|
|
case "test" ⇒ log.info("Received test")
|
|
case x ⇒ log.warning("Received unknown message: {}", x)
|
|
}
|
|
}
|
|
//#my-actor
|
|
|
|
//#my-event-listener
|
|
import akka.event.Logging.InitializeLogger
|
|
import akka.event.Logging.LoggerInitialized
|
|
import akka.event.Logging.Error
|
|
import akka.event.Logging.Warning
|
|
import akka.event.Logging.Info
|
|
import akka.event.Logging.Debug
|
|
|
|
class MyEventListener extends Actor {
|
|
def receive = {
|
|
case InitializeLogger(_) ⇒ sender ! LoggerInitialized
|
|
case Error(cause, logSource, logClass, message) ⇒ // ...
|
|
case Warning(logSource, logClass, message) ⇒ // ...
|
|
case Info(logSource, logClass, message) ⇒ // ...
|
|
case Debug(logSource, logClass, message) ⇒ // ...
|
|
}
|
|
}
|
|
//#my-event-listener
|
|
|
|
//#my-source
|
|
import akka.event.LogSource
|
|
import akka.actor.ActorSystem
|
|
|
|
object MyType {
|
|
implicit val logSource: LogSource[AnyRef] = new LogSource[AnyRef] {
|
|
def genString(o: AnyRef): String = o.getClass.getName
|
|
override def getClazz(o: AnyRef): Class[_] = o.getClass
|
|
}
|
|
}
|
|
|
|
class MyType(system: ActorSystem) {
|
|
import MyType._
|
|
import akka.event.Logging
|
|
|
|
val log = Logging(system, this)
|
|
}
|
|
//#my-source
|
|
}
|
|
|
|
class LoggingDocSpec extends AkkaSpec {
|
|
|
|
import LoggingDocSpec.MyActor
|
|
|
|
"use a logging actor" in {
|
|
val myActor = system.actorOf(Props(new MyActor))
|
|
myActor ! "test"
|
|
}
|
|
|
|
"allow registration to dead letters" in {
|
|
//#deadletters
|
|
import akka.actor.{ Actor, DeadLetter, Props }
|
|
|
|
val listener = system.actorOf(Props(new Actor {
|
|
def receive = {
|
|
case d: DeadLetter ⇒ println(d)
|
|
}
|
|
}))
|
|
system.eventStream.subscribe(listener, classOf[DeadLetter])
|
|
//#deadletters
|
|
}
|
|
|
|
"demonstrate logging more arguments" in {
|
|
//#array
|
|
val args = Array("The", "brown", "fox", "jumps", 42)
|
|
system.log.debug("five parameters: {}, {}, {}, {}, {}", args)
|
|
//#array
|
|
}
|
|
|
|
}
|