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