KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > protomatter > syslog > Wl6SyslogTextFormatter


1 package com.protomatter.syslog;
2
3 /**
4  * {{{ The Protomatter Software License, Version 1.0
5  * derived from The Apache Software License, Version 1.1
6  *
7  * Copyright (c) 1998-2002 Nate Sammons. All rights reserved.
8  *
9  * Redistribution and use in source and binary forms, with or without
10  * modification, are permitted provided that the following conditions
11  * are met:
12  *
13  * 1. Redistributions of source code must retain the above copyright
14  * notice, this list of conditions and the following disclaimer.
15  *
16  * 2. Redistributions in binary form must reproduce the above copyright
17  * notice, this list of conditions and the following disclaimer in
18  * the documentation and/or other materials provided with the
19  * distribution.
20  *
21  * 3. The end-user documentation included with the redistribution,
22  * if any, must include the following acknowledgment:
23  * "This product includes software developed for the
24  * Protomatter Software Project
25  * (http://protomatter.sourceforge.net/)."
26  * Alternately, this acknowledgment may appear in the software itself,
27  * if and wherever such third-party acknowledgments normally appear.
28  *
29  * 4. The names "Protomatter" and "Protomatter Software Project" must
30  * not be used to endorse or promote products derived from this
31  * software without prior written permission. For written
32  * permission, please contact support@protomatter.com.
33  *
34  * 5. Products derived from this software may not be called "Protomatter",
35  * nor may "Protomatter" appear in their name, without prior written
36  * permission of the Protomatter Software Project
37  * (support@protomatter.com).
38  *
39  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
40  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
41  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
42  * DISCLAIMED. IN NO EVENT SHALL THE PROTOMATTER SOFTWARE PROJECT OR
43  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
44  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
45  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
46  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
47  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
48  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
49  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
50  * SUCH DAMAGE. }}}
51  */

52
53 import java.util.Date JavaDoc;
54
55 /**
56  * A log formatter that mimics the log output from WebLogic Server 6.x.
57  * This logger is based on the
58  * {@link WlSyslogTextFormatter WlSyslogTextFormatter} which
59  * mimics output from WebLogic Server 4.x and 5.x.
60  *
61  * @see com.protomatter.syslog.xml.Wl6SyslogTextFormatter_Helper XML configuration class
62  */

63 public class Wl6SyslogTextFormatter
64 extends SimpleSyslogTextFormatter
65 {
66   // intern some strings so they are shared all over the VM.
67
private static char[] cr = System.getProperty("line.separator").toCharArray();
68   private static char rt = '>';
69   private static char sp = ' ';
70   private static char[] lf = " <".toCharArray();
71   private static char lab = '<';
72
73   private static char[] DEBUG = "Debug".toCharArray();
74   private static char[] INFO = "Info".toCharArray();
75   private static char[] WARNING = "Warning".toCharArray();
76   private static char[] ERROR = "Error".toCharArray();
77   private static char[] FATAL = "Fatal".toCharArray();
78   private static char[] UNKNOWN_LEVEL = "Unknown".toCharArray();
79
80   public Wl6SyslogTextFormatter()
81   {
82     super();
83     setDateFormat("MMM dd, yyyy HH:mm:ss a z");
84   }
85
86   public void formatLogEntry(StringBuffer JavaDoc b, SyslogMessage message)
87   {
88     b.append(lab);
89     b.append(formatDate(message.time));
90     b.append(rt);
91
92     b.append(lf);
93     b.append(getStringForLevel(message.level));
94     b.append(rt);
95
96     if (getShowChannel())
97     {
98       b.append(lf);
99       if (message.channel.equals(Syslog.ALL_CHANNEL))
100         b.append("ALL_CHANNEL");
101       else if (message.channel.equals(Syslog.DEFAULT_CHANNEL))
102         b.append("DEFAULT_CHANNEL");
103       else
104         b.append(message.channel);
105       b.append(": ");
106       //b.append(trimFromLastPeriod(message.loggerClassname));
107
formatLoggerClassName(b, message);
108       b.append(rt);
109     }
110     else
111     {
112       b.append(lf);
113       b.append(trimFromLastPeriod(message.loggerClassname));
114       b.append(rt);
115     }
116
117     if (getShowHostName())
118     {
119       b.append(lf);
120       b.append(Syslog.getResourceString(MessageConstants.WLS_HOST_MESSAGE));
121       b.append("=");
122       b.append(getHostname(message.host));
123       b.append(rt);
124     }
125
126     if (getShowThreadName())
127     {
128       b.append(lf);
129       b.append(Syslog.getResourceString(MessageConstants.WLS_THREAD_MESSAGE));
130       b.append("=");
131       b.append(message.threadName);
132       b.append(rt);
133     }
134
135     if (message.msg != null)
136     {
137       b.append(lf);
138       b.append(message.msg);
139       b.append(rt);
140     }
141     b.append(cr);
142     if (message.detail != null)
143     {
144       b.append(lab);
145       formatMessageDetail(b, message);
146       b.append(rt);
147       b.append(cr);
148     }
149   }
150
151   protected char[] getStringForLevel(int level)
152   {
153     switch (level)
154     {
155       case Syslog.DEBUG: return DEBUG;
156       case Syslog.INFO: return INFO;
157       case Syslog.WARNING: return WARNING;
158       case Syslog.ERROR: return ERROR;
159       case Syslog.FATAL: return FATAL;
160       default: return UNKNOWN_LEVEL;
161     }
162   }
163
164 }
165
Popular Tags