pekko/akka-contrib/src/test/scala/akka/contrib/jul/JavaLoggerSpec.scala
Patrik Nordwall 2a45d99ab3 Change more copyright to 2009-2013, see #2879
* Also added some missing headers
2013-02-20 21:26:52 +01:00

79 lines
2.3 KiB
Scala

/**
* Copyright (C) 2009-2013 Typesafe Inc. <http://www.typesafe.com>
*/
package akka.contrib.jul
import com.typesafe.config.ConfigFactory
import akka.actor.{ ActorSystem, Actor, ActorLogging, Props }
import akka.testkit.AkkaSpec
import java.util.logging
import java.io.ByteArrayInputStream
object JavaLoggerSpec {
val config = ConfigFactory.parseString("""
akka {
loglevel = INFO
loggers = ["akka.contrib.jul.JavaLogger"]
}""")
class LogProducer extends Actor with ActorLogging {
def receive = {
case e: Exception
log.error(e, e.getMessage)
case (s: String, x: Int)
log.info(s, x)
}
}
}
@org.junit.runner.RunWith(classOf[org.scalatest.junit.JUnitRunner])
class JavaLoggerSpec extends AkkaSpec(JavaLoggerSpec.config) {
val logger = logging.Logger.getLogger("akka://JavaLoggerSpec/user/log")
logger.setUseParentHandlers(false) // turn off output of test LogRecords
logger.addHandler(new logging.Handler {
def publish(record: logging.LogRecord) {
testActor ! record
}
def flush() {}
def close() {}
})
val producer = system.actorOf(Props[JavaLoggerSpec.LogProducer], name = "log")
"JavaLogger" must {
"log error with stackTrace" in {
producer ! new RuntimeException("Simulated error")
val record = expectMsgType[logging.LogRecord]
record must not be (null)
record.getMillis must not be (0)
record.getThreadID must not be (0)
record.getLevel must be(logging.Level.SEVERE)
record.getMessage must be("Simulated error")
record.getThrown.isInstanceOf[RuntimeException] must be(true)
record.getSourceClassName must be(classOf[JavaLoggerSpec.LogProducer].getName)
record.getSourceMethodName must be(null)
}
"log info without stackTrace" in {
producer ! ("{} is the magic number", 3)
val record = expectMsgType[logging.LogRecord]
record must not be (null)
record.getMillis must not be (0)
record.getThreadID must not be (0)
record.getLevel must be(logging.Level.INFO)
record.getMessage must be("3 is the magic number")
record.getThrown must be(null)
record.getSourceClassName must be(classOf[JavaLoggerSpec.LogProducer].getName)
record.getSourceMethodName must be(null)
}
}
}