001/* ======================================================================== 002 * JCommon : a free general purpose class library for the Java(tm) platform 003 * ======================================================================== 004 * 005 * (C) Copyright 2000-2005, by Object Refinery Limited and Contributors. 006 * 007 * Project Info: http://www.jfree.org/jcommon/index.html 008 * 009 * This library is free software; you can redistribute it and/or modify it 010 * under the terms of the GNU Lesser General Public License as published by 011 * the Free Software Foundation; either version 2.1 of the License, or 012 * (at your option) any later version. 013 * 014 * This library is distributed in the hope that it will be useful, but 015 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 016 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 017 * License for more details. 018 * 019 * You should have received a copy of the GNU Lesser General Public 020 * License along with this library; if not, write to the Free Software 021 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 022 * USA. 023 * 024 * [Java is a trademark or registered trademark of Sun Microsystems, Inc. 025 * in the United States and other countries.] 026 * 027 * --------------- 028 * LogContext.java 029 * --------------- 030 * (C)opyright 2004, by Thomas Morgner and Contributors. 031 * 032 * Original Author: Thomas Morgner; 033 * Contributor(s): David Gilbert (for Object Refinery Limited); 034 * 035 * $Id: LogContext.java,v 1.3 2005/10/18 13:24:19 mungady Exp $ 036 * 037 * Changes 038 * ------- 039 * 26-Apr-2004 : Initial version (TM); 040 * 041 */ 042 043package org.jfree.util; 044 045/** 046 * A log context. 047 * 048 * @author Thomas Morgner 049 */ 050public class LogContext { 051 052 /** The prefix string. */ 053 private String contextPrefix; 054 055 /** 056 * Creates a new log context. 057 * 058 * @param contextPrefix the prefix. 059 */ 060 public LogContext(final String contextPrefix) { 061 this.contextPrefix = contextPrefix; 062 } 063 064 /** 065 * Returns true, if the log level allows debug messages to be 066 * printed. 067 * 068 * @return true, if messages with an log level of DEBUG are allowed. 069 */ 070 public boolean isDebugEnabled() { 071 return Log.isDebugEnabled(); 072 } 073 074 /** 075 * Returns true, if the log level allows informational 076 * messages to be printed. 077 * 078 * @return true, if messages with an log level of INFO are allowed. 079 */ 080 public boolean isInfoEnabled() { 081 return Log.isInfoEnabled(); 082 } 083 084 /** 085 * Returns true, if the log level allows warning messages to be 086 * printed. 087 * 088 * @return true, if messages with an log level of WARN are allowed. 089 */ 090 public boolean isWarningEnabled() { 091 return Log.isWarningEnabled(); 092 } 093 094 /** 095 * Returns true, if the log level allows error messages to be 096 * printed. 097 * 098 * @return true, if messages with an log level of ERROR are allowed. 099 */ 100 public boolean isErrorEnabled() { 101 return Log.isErrorEnabled(); 102 } 103 104 105 /** 106 * A convenience method for logging a 'debug' message. 107 * 108 * @param message the message. 109 */ 110 public void debug(final Object message) { 111 log(LogTarget.DEBUG, message); 112 } 113 114 /** 115 * A convenience method for logging a 'debug' message. 116 * 117 * @param message the message. 118 * @param e the exception. 119 */ 120 public void debug(final Object message, final Exception e) { 121 log(LogTarget.DEBUG, message, e); 122 } 123 124 /** 125 * A convenience method for logging an 'info' message. 126 * 127 * @param message the message. 128 */ 129 public void info(final Object message) { 130 log(LogTarget.INFO, message); 131 } 132 133 /** 134 * A convenience method for logging an 'info' message. 135 * 136 * @param message the message. 137 * @param e the exception. 138 */ 139 public void info(final Object message, final Exception e) { 140 log(LogTarget.INFO, message, e); 141 } 142 143 /** 144 * A convenience method for logging a 'warning' message. 145 * 146 * @param message the message. 147 */ 148 public void warn(final Object message) { 149 log(LogTarget.WARN, message); 150 } 151 152 /** 153 * A convenience method for logging a 'warning' message. 154 * 155 * @param message the message. 156 * @param e the exception. 157 */ 158 public void warn(final Object message, final Exception e) { 159 log(LogTarget.WARN, message, e); 160 } 161 162 /** 163 * A convenience method for logging an 'error' message. 164 * 165 * @param message the message. 166 */ 167 public void error(final Object message) { 168 log(LogTarget.ERROR, message); 169 } 170 171 /** 172 * A convenience method for logging an 'error' message. 173 * 174 * @param message the message. 175 * @param e the exception. 176 */ 177 public void error(final Object message, final Exception e) { 178 log(LogTarget.ERROR, message, e); 179 } 180 181 /** 182 * Logs a message to the main log stream. All attached log targets will also 183 * receive this message. If the given log-level is higher than the given debug-level 184 * in the main config file, no logging will be done. 185 * 186 * @param level log level of the message. 187 * @param message text to be logged. 188 */ 189 public void log(final int level, final Object message) { 190 if (this.contextPrefix != null) { 191 Log.getInstance().doLog(level, new Log.SimpleMessage(this.contextPrefix, ":", message)); 192 } 193 else { 194 Log.getInstance().doLog(level, message); 195 } 196 } 197 198 /** 199 * Logs a message to the main log stream. All attached logTargets will also 200 * receive this message. If the given log-level is higher than the given debug-level 201 * in the main config file, no logging will be done. 202 * <p/> 203 * The exception's stacktrace will be appended to the log-stream 204 * 205 * @param level log level of the message. 206 * @param message text to be logged. 207 * @param e the exception, which should be logged. 208 */ 209 public void log(final int level, final Object message, final Exception e) { 210 if (this.contextPrefix != null) { 211 Log.getInstance().doLog( 212 level, new Log.SimpleMessage(this.contextPrefix, ":", message), e 213 ); 214 } 215 else { 216 Log.getInstance().doLog(level, message, e); 217 } 218 } 219 220 /** 221 * Tests this object for equality with an arbitrary object. 222 * 223 * @param o the object to test against (<code>null</code> permitted). 224 * 225 * @return A boolean. 226 */ 227 public boolean equals(final Object o) { 228 if (this == o) { 229 return true; 230 } 231 if (!(o instanceof LogContext)) { 232 return false; 233 } 234 235 final LogContext logContext = (LogContext) o; 236 237 if (this.contextPrefix != null) 238 { 239 if (!this.contextPrefix.equals(logContext.contextPrefix)) { 240 return false; 241 } 242 } 243 else { 244 if (logContext.contextPrefix != null) { 245 return false; 246 } 247 } 248 249 return true; 250 } 251 252 /** 253 * Returns a hashcode. 254 * 255 * @return The hashcode. 256 */ 257 public int hashCode() { 258 return (this.contextPrefix != null ? this.contextPrefix.hashCode() : 0); 259 } 260}