bitcoin-atm

bitcoin atm for pyc inc.

git clone https://9o.is/git/bitcoin-atm.git

Logger.scala

(1795B)


      1 package inc.pyc.chimera
      2 package lycia
      3 
      4 import akka.actor._
      5 import akka.event.Logging._
      6 import java.text.SimpleDateFormat
      7 import java.util.Date
      8 
      9 class Logger extends Actor {
     10     
     11   def receive = {
     12     case InitializeLogger(_)  => sender() ! LoggerInitialized
     13     case e: Error             => error(e)
     14     case e: Warning           => warning(e)
     15     case e: Info              => info(e)
     16     case e: Debug             => debug(e)
     17   }
     18   
     19   def send(msg: String): Unit = {
     20     // TODO send log to Lycia
     21   }
     22 
     23   private val date = new Date()
     24   private val dateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss.SSS")
     25   private val errorFormat = "[ERROR] [%s] [%s] [%s] %s%s"
     26   private val errorFormatWithoutCause = "[ERROR] [%s] [%s] [%s] %s"
     27   private val warningFormat = "[WARN] [%s] [%s] [%s] %s"
     28   private val infoFormat = "[INFO] [%s] [%s] [%s] %s"
     29   private val debugFormat = "[DEBUG] [%s] [%s] [%s] %s"
     30 
     31   def timestamp(event: LogEvent): String = synchronized {
     32     date.setTime(event.timestamp)
     33     dateFormat.format(date)
     34   }
     35 
     36   def error(event: Error): Unit = {
     37     val f = if (event.cause == Error.NoCause) errorFormatWithoutCause else errorFormat
     38     send(f.format(
     39       timestamp(event),
     40       event.thread.getName,
     41       event.logSource,
     42       event.message,
     43       stackTraceFor(event.cause)))
     44   }
     45 
     46   def warning(event: Warning): Unit =
     47     send(warningFormat.format(
     48       timestamp(event),
     49       event.thread.getName,
     50       event.logSource,
     51       event.message))
     52 
     53   def info(event: Info): Unit =
     54     send(infoFormat.format(
     55       timestamp(event),
     56       event.thread.getName,
     57       event.logSource,
     58       event.message))
     59 
     60   def debug(event: Debug): Unit =
     61     send(debugFormat.format(
     62       timestamp(event),
     63       event.thread.getName,
     64       event.logSource,
     65       event.message))
     66 }
     67