|
Play Framework/Scala example source code file (LogTester.scala)
The LogTester.scala Play Framework example source code/* * Copyright (C) 2009-2014 Typesafe Inc. <http://www.typesafe.com> */ package play.it import org.slf4j.LoggerFactory import ch.qos.logback.core.AppenderBase import ch.qos.logback.classic.spi.ILoggingEvent import scala.collection.mutable.ListBuffer import ch.qos.logback.classic.{Logger, LoggerContext, Level} import play.api.Play /** * Test utility for testing Play logs */ object LogTester { def withLogBuffer[T](block: LogBuffer => T) = { val ctx = LoggerFactory.getILoggerFactory.asInstanceOf[LoggerContext] val root = ctx.getLogger("ROOT") val rootLevel = root.getLevel val playLogger = Play.logger.logger.asInstanceOf[Logger] val playLevel = playLogger.getLevel val appender = new LogBuffer() appender.start() try { root.addAppender(appender) root.setLevel(Level.ALL) playLogger.addAppender(appender) playLogger.setLevel(Level.ALL) block(appender) } finally { root.detachAppender(appender) root.setLevel(rootLevel) playLogger.detachAppender(appender) playLogger.setLevel(playLevel) } } } class LogBuffer extends AppenderBase[ILoggingEvent] { private val buffer = ListBuffer.empty[ILoggingEvent] def append(eventObject: ILoggingEvent) = buffer.synchronized { buffer.append(eventObject) } def find(level: Option[Level] = None, logger: Option[String] = None, messageContains: Option[String] = None ): List[ILoggingEvent] = buffer.synchronized { val byLevel = level.fold(buffer) { l => buffer.filter(_.getLevel == l) } val byLogger = logger.fold(byLevel) { l => byLevel.filter(_.getLoggerName == l)} val byMessageContains = logger.fold(byLogger) { m => byLogger.filter(_.getMessage.contains(m))} byMessageContains.toList } } Other Play Framework source code examplesHere is a short list of links related to this Play Framework LogTester.scala source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.