Mercurial > projects > ldc
comparison tango/tango/util/log/EventLayout.d @ 132:1700239cab2e trunk
[svn r136] MAJOR UNSTABLE UPDATE!!!
Initial commit after moving to Tango instead of Phobos.
Lots of bugfixes...
This build is not suitable for most things.
author | lindquist |
---|---|
date | Fri, 11 Jan 2008 17:57:40 +0100 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
131:5825d48b27d1 | 132:1700239cab2e |
---|---|
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 } |