2011-12-19 11:07:59 +01:00
|
|
|
/**
|
2013-01-09 01:47:48 +01:00
|
|
|
* Copyright (C) 2009-2013 Typesafe Inc. <http://www.typesafe.com>
|
2011-12-19 11:07:59 +01:00
|
|
|
*/
|
2012-05-22 11:37:09 +02:00
|
|
|
package docs.event
|
2011-12-13 12:33:29 +01:00
|
|
|
|
|
|
|
|
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 = {
|
2012-01-11 14:14:08 +01:00
|
|
|
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) ⇒ // ...
|
2011-12-13 12:33:29 +01:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//#my-event-listener
|
|
|
|
|
|
2012-01-13 13:50:42 +01:00
|
|
|
//#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
|
2011-12-13 12:33:29 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
class LoggingDocSpec extends AkkaSpec {
|
|
|
|
|
|
|
|
|
|
import LoggingDocSpec.MyActor
|
|
|
|
|
|
|
|
|
|
"use a logging actor" in {
|
2013-04-14 22:56:41 +02:00
|
|
|
val myActor = system.actorOf(Props[MyActor])
|
2011-12-13 12:33:29 +01:00
|
|
|
myActor ! "test"
|
|
|
|
|
}
|
|
|
|
|
|
2011-12-30 00:00:25 +01:00
|
|
|
"allow registration to dead letters" in {
|
2013-04-14 22:56:41 +02:00
|
|
|
new AnyRef {
|
|
|
|
|
//#deadletters
|
|
|
|
|
import akka.actor.{ Actor, DeadLetter, Props }
|
|
|
|
|
|
|
|
|
|
class Listener extends Actor {
|
|
|
|
|
def receive = {
|
|
|
|
|
case d: DeadLetter ⇒ println(d)
|
|
|
|
|
}
|
2011-12-30 00:00:25 +01:00
|
|
|
}
|
2013-04-14 22:56:41 +02:00
|
|
|
val listener = system.actorOf(Props(classOf[Listener], this))
|
|
|
|
|
system.eventStream.subscribe(listener, classOf[DeadLetter])
|
|
|
|
|
//#deadletters
|
|
|
|
|
}
|
2011-12-30 00:00:25 +01:00
|
|
|
}
|
|
|
|
|
|
2012-02-22 11:00:00 +01:00
|
|
|
"demonstrate logging more arguments" in {
|
|
|
|
|
//#array
|
|
|
|
|
val args = Array("The", "brown", "fox", "jumps", 42)
|
|
|
|
|
system.log.debug("five parameters: {}, {}, {}, {}, {}", args)
|
|
|
|
|
//#array
|
|
|
|
|
}
|
|
|
|
|
|
2011-12-13 12:33:29 +01:00
|
|
|
}
|