1 /***
2
3 Copyright (C) 2002-2003 Together
4
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with this library; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18
19 Logger.java
20 Date: 02.12.2003.
21 @version 1.0.0
22 @authors:
23 Milosevic Sinisa sinisa@prozone.co.yu
24 Radoslav Dutina rale@prozone.co.yu
25 Zoran Milakovic zoran@prozone.co.yu
26 */
27 package org.webdocwf.util.loader.logging;
28
29 import java.io.IOException;
30
31
32 /***
33 * A general-purpose logging facility. It is modeled after
34 * <CODE>syslogd</CODE>. This is a base class from which an actual
35 * implementation is derived. It only defines how log message are written
36 * by a client. Where the log message is written and the mechanism for
37 * controlling logging is left up to the implementation. This class does
38 * not define any of these mechanism and their definition is not necessary
39 * for understand how to use this class. <P>
40 *
41 * Each log message is associate with a facility and has a level assigned
42 * to it. A facility is a symbolic (String) name that defines a class of
43 * log messages. A level is used to indicate the
44 *
45 It is expected that the implementation can enable, disable and
46 * direct log messages based on these attributes. Facilities and levels
47 * are defined symbolicly, with no restriction on the name, and form a tuple.
48 * Several standard levels are defined as integer constants and their use
49 * is expected to be higher performing than symbolic levels..<P>
50 *
51 *
52 *Normally, a single,
53 global instance of the object
54 * is exists and is obtainable by a static method in this class.<P>
55 *
56 * Log messages are written via an object implementing <CODE>LogChannel</CODE>.
57 * A channel is associated with a single facility, with the level being
58 * specified when a message is written. Normally, a <CODE>LogChannel</CODE>
59 * is obtained once at initialization time and use repeatedly. It is
60 * permissible to obtain multiple references to the log channel for a facility,
61 * but this is discouraged for performance reasons.<P>
62 *
63 * Log messages, even debugging ones, should be defined with care. They
64 * should be terse, but clear to someone who isn't intimately familiar with
65 * the code. Permanent debugging messages should be designed with the idea
66 * of use when supportting a deployed product.<P>
67 *
68 * The central logging object needs to be configured very early in the startup
69 * process. If logging can't be configured, then the startup should be aborted
70 * or a object created that does some simple form of logging, such as write
71 * to <CODE>stderr<CODE>. A client should never have to check if the global
72 * logger object exists.<P>
73 *
74 */
75 public abstract class Logger {
76
77 /***
78 * Standard level.
79 */
80 public static final int LOGMODE_NORMAL = 1;
81
82 /***
83 * A condition that should be corrected immediately
84 */
85 public static final int LOGMODE_NONE = 0;
86
87 /***
88 * Critical conditions.
89 */
90 public static final int LOGMODE_FULL = 2;
91
92 public static final String strLOGMODE_NONE = "NONE";
93 public static final String strLOGMODE_NORMAL = "NORMAL";
94 public static final String strLOGMODE_FULL = "FULL";
95
96 public boolean[] enbledLogLevels;
97
98 /***
99 * Global <CODE>Logger</CODE> object.
100 */
101 protected static Logger centralLogger;
102
103 /***
104 * Table of standard level names
105 */
106 protected static final String[] standardLevelNames = {
107 strLOGMODE_NORMAL, // 0
108 strLOGMODE_NONE, // 1
109 strLOGMODE_FULL // 2
110 };
111
112 /***
113 * Get the central (global) logging object.
114 *
115 * @return A reference the object. If the facility has not been
116 * initialized <CODE>null</CODE> is returned. However, this is
117 * considered a bug in the design of the initialization. Clients
118 * do not need to check for <CODE>null</CODE>.
119 */
120 public static Logger getCentralLogger() {
121 return centralLogger;
122 }
123
124 /***
125 * Configure Logger with given config file, interpreting of config file is
126 * logger implementation specific.
127 *
128 * @param confFilePath Path to configuration file.
129 * @throws Exception
130 */
131 abstract public void configure(String confFilePath) throws Exception;
132
133 /***
134 * Determine if logging is enabled for the specified level. This
135 * is useful to prevent a series of unnecessary logging calls,
136 * as often encountered with debug logging, or a call where generating
137 * the message is expensive.
138 *
139 * @param level Numeric level that is to be checked.
140 * @return <CODE>true</CODE> if enabled, <CODE>false</CODE> if not
141 * enabled.
142 */
143 abstract public boolean isEnabled(int level);
144
145 /***
146 * Determine if logging is enabled for the specified level. This
147 * is useful to prevent a series of unnecessary logging calls,
148 * as often encountered with debug logging, or a call where generating
149 * the message is expensive.
150 *
151 * @param level Symbolic level that is to be checked.
152 * @return <CODE>true</CODE> if enabled, <CODE>false</CODE> if not
153 * enabled.
154 */
155 abstract public boolean isEnabled(String level);
156
157 /***
158 * Convert a symbolic level to an integer identifier.
159 *
160 * @param level Symbolic level to convert
161 * @return The numeric level identifier
162 */
163 abstract public int getLevel(String level);
164
165
166 /***
167 * Write a string to the log file.
168 *
169 * @param level Numeric level the message is associated with.
170 * @param msg The message to log.
171 */
172 abstract public void write(int level, String msg);
173
174 /***
175 * Write a string to the log file.
176 *
177 * @param level Symbolic level the message is associated with.
178 * @param msg The message to log.
179 */
180 abstract public void write(String level, String msg);
181
182 /***
183 * Write a string and exception to the log file.
184 *
185 * @param level Numeric level the message is associated with.
186 * @param msg The message to log.
187 * @param throwable Exception or error to log.
188 */
189 abstract public void write(int level, String msg, Throwable throwable);
190
191 /***
192 * Write a string and exception to the log file.
193 *
194 * @param level Symbolic level the message is associated with.
195 * @param msg The message to log.
196 * @param throwable Exception or error to log.
197 */
198 abstract public void write(String level, String msg, Throwable throwable);
199
200 abstract public boolean[] getEnabledLogLevels();
201
202 abstract public void setEnabledLogLevels(String logMode);
203
204 abstract public boolean setMessage(String key, String value);
205
206 abstract public String getMessage(String key);
207
208 abstract public boolean writeEcho (String strLogTxt);
209
210 abstract public void close();
211 }
212
This page was automatically generated by Maven