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 }