132
|
1 /*******************************************************************************
|
|
2
|
|
3 copyright: Copyright (c) 2004 Kris Bell. All rights reserved
|
|
4
|
|
5 license: BSD style: $(LICENSE)
|
|
6
|
|
7 version: Initial release: May 2004
|
|
8
|
|
9 author: Kris
|
|
10
|
|
11 *******************************************************************************/
|
|
12
|
|
13 module tango.util.log.EventLayout;
|
|
14
|
|
15 private import tango.time.Time;
|
|
16
|
|
17 private import tango.util.log.Event;
|
|
18
|
|
19 /*******************************************************************************
|
|
20
|
|
21 Base class for all logging layout instances
|
|
22
|
|
23 *******************************************************************************/
|
|
24
|
|
25 public class EventLayout
|
|
26 {
|
|
27 /***********************************************************************
|
|
28
|
|
29 Subclasses should implement this method to perform the
|
|
30 formatting of each message header
|
|
31
|
|
32 ***********************************************************************/
|
|
33
|
|
34 abstract char[] header (Event event);
|
|
35
|
|
36 /***********************************************************************
|
|
37
|
|
38 Subclasses should implement this method to perform the
|
|
39 formatting of each message footer
|
|
40
|
|
41 ***********************************************************************/
|
|
42
|
|
43 char[] footer (Event event)
|
|
44 {
|
|
45 return "";
|
|
46 }
|
|
47
|
|
48 /***********************************************************************
|
|
49
|
|
50 Subclasses should implement this method to perform the
|
|
51 formatting of the actual message content.
|
|
52
|
|
53 ***********************************************************************/
|
|
54
|
|
55 char[] content (Event event)
|
|
56 {
|
|
57 return event.toString;
|
|
58 }
|
|
59
|
|
60 /***********************************************************************
|
|
61
|
|
62 Convert a time value (in milliseconds) to ascii
|
|
63
|
|
64 ***********************************************************************/
|
|
65
|
|
66 final char[] toMilli (char[] s, TimeSpan time)
|
|
67 {
|
|
68 assert (s.length > 0);
|
|
69 long ms = time.millis;
|
|
70
|
|
71 int len = s.length;
|
|
72 do {
|
|
73 s[--len] = ms % 10 + '0';
|
|
74 ms /= 10;
|
|
75 } while (ms && len);
|
|
76 return s[len..s.length];
|
|
77 }
|
|
78 }
|
|
79
|
|
80
|
|
81 /*******************************************************************************
|
|
82
|
|
83 A bare layout comprised of tag and message
|
|
84
|
|
85 *******************************************************************************/
|
|
86
|
|
87 public class SpartanLayout : EventLayout
|
|
88 {
|
|
89 /***********************************************************************
|
|
90
|
|
91 Format outgoing message
|
|
92
|
|
93 ***********************************************************************/
|
|
94
|
|
95 char[] header (Event event)
|
|
96 {
|
|
97 event.append(event.getName).append(event.getHierarchy.context.label).append(" - ");
|
|
98 return event.getContent;
|
|
99 }
|
|
100 }
|
|
101
|
|
102
|
|
103 /*******************************************************************************
|
|
104
|
|
105 A simple layout comprised only of level, name, and message
|
|
106
|
|
107 *******************************************************************************/
|
|
108
|
|
109 public class SimpleLayout : EventLayout
|
|
110 {
|
|
111 /***********************************************************************
|
|
112
|
|
113 Format outgoing message
|
|
114
|
|
115 ***********************************************************************/
|
|
116
|
|
117 char[] header (Event event)
|
|
118 {
|
|
119 event.append (event.getLevelName)
|
|
120 .append (event.getName)
|
|
121 .append(event.getHierarchy.context.label)
|
|
122 .append (" - ");
|
|
123 return event.getContent;
|
|
124 }
|
|
125 }
|
|
126
|
|
127
|
|
128 /*******************************************************************************
|
|
129
|
|
130 A simple layout comprised only of time(ms), level, name, and message
|
|
131
|
|
132 *******************************************************************************/
|
|
133
|
|
134 public class SimpleTimerLayout : EventLayout
|
|
135 {
|
|
136 /***********************************************************************
|
|
137
|
|
138 Format outgoing message
|
|
139
|
|
140 ***********************************************************************/
|
|
141
|
|
142 char[] header (Event event)
|
|
143 {
|
|
144 char[20] tmp;
|
|
145
|
|
146 event.append (toMilli (tmp, event.getSpan))
|
|
147 .append (" ")
|
|
148 .append (event.getLevelName)
|
|
149 .append (event.getName)
|
|
150 .append(event.getHierarchy.context.label)
|
|
151 .append (" - ");
|
|
152 return event.getContent;
|
|
153 }
|
|
154 }
|