001: /*--
002:
003: Copyright (C) 2001 Anthony Eden.
004: All rights reserved.
005:
006: Redistribution and use in source and binary forms, with or without
007: modification, are permitted provided that the following conditions
008: are met:
009:
010: 1. Redistributions of source code must retain the above copyright
011: notice, this list of conditions, and the following disclaimer.
012:
013: 2. Redistributions in binary form must reproduce the above copyright
014: notice, this list of conditions, and the disclaimer that follows
015: these conditions in the documentation and/or other materials
016: provided with the distribution.
017:
018: 3. The name "EdenLib" must not be used to endorse or promote products
019: derived from this software without prior written permission. For
020: written permission, please contact me@anthonyeden.com.
021:
022: 4. Products derived from this software may not be called "EdenLib", nor
023: may "EdenLib" appear in their name, without prior written permission
024: from Anthony Eden (me@anthonyeden.com).
025:
026: In addition, I request (but do not require) that you include in the
027: end-user documentation provided with the redistribution and/or in the
028: software itself an acknowledgement equivalent to the following:
029: "This product includes software developed by
030: Anthony Eden (http://www.anthonyeden.com/)."
031:
032: THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
033: WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
034: OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
035: DISCLAIMED. IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT,
036: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
037: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
038: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
039: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
040: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
041: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
042: POSSIBILITY OF SUCH DAMAGE.
043:
044: For more information on EdenLib, please see <http://edenlib.sf.net/>.
045:
046: */
047:
048: package com.anthonyeden.lib.util;
049:
050: import org.apache.commons.logging.Log;
051:
052: import java.util.Iterator;
053: import java.util.Map;
054:
055: /**
056: * A utility class to assist with extended logging.
057: *
058: * @author Anthony Eden
059: * @author <a href="mailto:florin.patrascu@gmail.com">Florin T.PATRASCU</a>
060: */
061:
062: public class LogUtilities {
063:
064: private LogUtilities() {
065: // no op
066: }
067:
068: /**
069: * Standard debugging.
070: *
071: * @param log The Logger to log to
072: * @param message The message
073: * @deprecated Use <code>debug(Log log, String message)</code>
074: */
075:
076: public static void debug(Log log, String message) {
077: log.debug(message);
078: }
079:
080: /**
081: * Extended debugging. The name/value pairs in the data object will
082: * be appended to the log message.
083: *
084: * @param log The Log to log to
085: * @param message The message
086: * @param data Any additional data to log
087: */
088:
089: public static void debug(Log log, String message, Map data) {
090: log.debug(generateMessage(message, data));
091: }
092:
093: /**
094: * Generate a single String which combines the log message with the
095: * given data.
096: *
097: * @param message The message
098: * @param data The data
099: * @return The complete message String
100: */
101:
102: private static String generateMessage(String message, Map data) {
103: StringBuffer buffer = new StringBuffer();
104: buffer.append(message);
105:
106: Iterator keys = data.keySet().iterator();
107: if (keys.hasNext()) {
108: buffer.append(" [");
109:
110: while (keys.hasNext()) {
111: Object key = keys.next();
112: Object value = data.get(key);
113:
114: buffer.append(key.toString());
115: buffer.append("=");
116: buffer.append(value.toString());
117:
118: if (keys.hasNext()) {
119: buffer.append(",");
120: }
121: }
122:
123: buffer.append("]");
124: }
125:
126: return buffer.toString();
127: }
128:
129: }
|