package com.revolsys.logging; import java.sql.SQLException; import java.util.List; import java.util.Set; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.core.NestedRuntimeException; import com.revolsys.collection.list.Lists; import com.revolsys.collection.set.Sets; import com.revolsys.util.Exceptions; import com.revolsys.util.Property; import com.revolsys.util.WrappedException; public class Logs { public static void debug(final Class<?> clazz, final String message) { final String name = clazz.getName(); debug(name, message); } public static void debug(final Class<?> clazz, final String message, final Throwable e) { final String name = clazz.getName(); debug(name, message, e); } public static void debug(final Class<?> clazz, final Throwable e) { final String name = clazz.getName(); debug(name, e); } public static void debug(final Object object, final String message) { final Class<?> clazz = object.getClass(); debug(clazz, message); } public static void debug(final Object object, final String message, final Throwable e) { final Class<?> clazz = object.getClass(); debug(clazz, message, e); } public static void debug(final Object object, final Throwable e) { final Class<?> clazz = object.getClass(); debug(clazz, e); } public static void debug(final String name, final String message) { final Logger logger = LoggerFactory.getLogger(name); logger.debug(message); } public static void debug(final String name, final String message, final Throwable e) { final StringBuilder messageText = new StringBuilder(); final Throwable logException = getMessageAndException(messageText, message, e); final Logger logger = LoggerFactory.getLogger(name); logger.debug(messageText.toString(), logException); } public static void debug(final String name, final Throwable e) { final String message = e.getMessage(); debug(name, message, e); } public static void error(final Class<?> clazz, final String message) { final String name = clazz.getName(); error(name, message); } public static void error(final Class<?> clazz, final String message, final Throwable e) { final String name = clazz.getName(); error(name, message, e); } public static void error(final Class<?> clazz, final Throwable e) { final String message = e.getMessage(); error(clazz, message, e); } public static void error(final Object object, final String message) { final Class<?> clazz = object.getClass(); error(clazz, message); } public static void error(final Object object, final String message, final Throwable e) { final Class<?> clazz = object.getClass(); error(clazz, message, e); } public static void error(final Object object, final Throwable e) { final Class<?> clazz = object.getClass(); error(clazz, e); } public static void error(final String name, final String message) { final Logger logger = LoggerFactory.getLogger(name); logger.error(message); } public static void error(final String name, final String message, final Throwable e) { final StringBuilder messageText = new StringBuilder(); final Throwable logException = getMessageAndException(messageText, message, e); final Logger logger = LoggerFactory.getLogger(name); logger.error(messageText.toString(), logException); } public static void error(final String name, final Throwable e) { final String message = e.getMessage(); error(name, message, e); } public static Throwable getMessageAndException(final StringBuilder messageText, final String message, final Throwable e) { Throwable logException = e; final Set<String> messages = Sets.newLinkedHash(message); if (Property.hasValue(message)) { messageText.append(message); } while (logException instanceof WrappedException || logException instanceof NestedRuntimeException) { if (messageText.length() > 0) { messageText.append('\n'); } messageText.append(logException.getClass().getName()); messageText.append(": "); final String wrappedMessage = logException.getMessage(); if (messages.add(wrappedMessage)) { messageText.append(wrappedMessage); } final Throwable cause = logException.getCause(); if (cause == null) { break; } else { logException = cause; } } if (logException instanceof SQLException) { final SQLException sqlException = (SQLException)logException; final List<Throwable> exceptions = Lists.toArray(sqlException); final int exceptionCount = exceptions.size(); if (exceptionCount > 0) { logException = exceptions.remove(exceptionCount - 1); for (final Throwable throwable : exceptions) { if (messageText.length() > 0) { messageText.append('\n'); } if (throwable == sqlException) { messageText.append(sqlException.getClass().getName()); messageText.append(": "); final String wrappedMessage = sqlException.getMessage(); if (messages.add(wrappedMessage)) { messageText.append(wrappedMessage); } } else { messageText.append(Exceptions.toString(throwable)); } } } } return logException; } public static void info(final Class<?> clazz, final String message) { final String name = clazz.getName(); info(name, message); } public static void info(final Class<?> clazz, final String message, final Throwable e) { final String name = clazz.getName(); info(name, message, e); } public static void info(final Class<?> clazz, final Throwable e) { final String message = e.getMessage(); info(clazz, message, e); } public static void info(final Object object, final String message) { final Class<?> clazz = object.getClass(); info(clazz, message); } public static void info(final String name, final String message) { final Logger logger = LoggerFactory.getLogger(name); logger.info(message); } public static void info(final String name, final String message, final Throwable e) { final StringBuilder messageText = new StringBuilder(); final Throwable logException = getMessageAndException(messageText, message, e); final Logger logger = LoggerFactory.getLogger(name); logger.info(messageText.toString(), logException); } public static boolean isDebugEnabled(final Class<?> logCateogory) { final Logger logger = LoggerFactory.getLogger(logCateogory); return logger.isDebugEnabled(); } public static boolean isDebugEnabled(final Object logCateogory) { final Class<?> logClass = logCateogory.getClass(); return isDebugEnabled(logClass); } public static void warn(final Class<?> clazz, final String message) { final String name = clazz.getName(); warn(name, message); } public static void warn(final Class<?> clazz, final String message, final Throwable e) { final String name = clazz.getName(); warn(name, message, e); } public static void warn(final Class<?> clazz, final Throwable e) { final String name = clazz.getName(); warn(name, e); } public static void warn(final Object object, final String message) { final Class<?> clazz = object.getClass(); warn(clazz, message); } public static void warn(final Object object, final String message, final Throwable e) { final Class<?> clazz = object.getClass(); warn(clazz, message, e); } public static void warn(final Object object, final Throwable e) { final Class<?> clazz = object.getClass(); warn(clazz, e); } public static void warn(final String name, final String message) { final Logger logger = LoggerFactory.getLogger(name); logger.warn(message); } public static void warn(final String name, final String message, final Throwable e) { final StringBuilder messageText = new StringBuilder(); final Throwable logException = getMessageAndException(messageText, message, e); final Logger logger = LoggerFactory.getLogger(name); logger.warn(messageText.toString(), logException); } public static void warn(final String name, final Throwable e) { final String message = e.getMessage(); warn(name, message, e); } }