hpcnx commented on issue #2323:
URL:
https://github.com/apache/logging-log4j2/issues/2323#issuecomment-1973490320
package com.intervoice.logging;
import java.lang.reflect.Array;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Enumeration;
import java.util.Formatter;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import org.apache.logging.log4j.Level;
public class LoggerUtil
{
public static String formatMessage(String message, Object... varargs)
{
Formatter formatter = new Formatter();
ArrayList<Object> formattableArgs = new ArrayList(varargs.length);
Object[] arrayOfObject;
int j = (arrayOfObject = varargs).length;
for (int i = 0; i < j; i++)
{
Object varg = arrayOfObject[i];
if (varg != null)
{
Class<?> varclass = varg.getClass();
if ((varclass.isArray()) ||
(Collection.class.isAssignableFrom(varclass)) ||
(Map.class.isAssignableFrom(varclass)) ||
(Map.Entry.class.isAssignableFrom(varclass))) {
formattableArgs.add(new DeepFormatter(varg));
} else {
formattableArgs.add(varg);
}
}
else
{
formattableArgs.add(varg);
}
}
String formattedMessage = null;
try
{
formattedMessage = formatter.format(message,
formattableArgs.toArray()).toString();
}
catch (Exception e)
{
getConfigLogger(LoggerUtil.class).warn("Could not format message", e);
formattedMessage = "Unable to format log message: " + e.getMessage();
}
return formattedMessage;
}
public static void logf(ILogger logger, Level level, String message,
Object... varargs)
{
if (logger.isEnabledFor(level)) {
logger.log(level, formatMessage(message, varargs));
}
}
public static void logf(IPrivacyAware privatizable, ILogger logger, Level
level, String message, Object... varargs)
{
if ((privatizable == null) || (!privatizable.isPrivate())) {
logf(logger, level, message, varargs);
}
}
public static void logf(ILogger logger, Level level, String message,
Throwable t, Object... varargs)
{
if (logger.isEnabledFor(level)) {
logger.log(level, formatMessage(message, varargs), t);
}
}
public static void logf(IPrivacyAware privatizable, ILogger logger, Level
level, String message, Throwable t, Object... varargs)
{
if ((privatizable == null) || (!privatizable.isPrivate())) {
logf(logger, level, message, t, varargs);
}
}
public static void fatalf(ILogger logger, String message, Object...
varargs)
{
if (logger.isFatalEnabled()) {
logger.fatal(formatMessage(message, varargs));
}
}
public static void fatalf(IPrivacyAware privatizable, ILogger logger,
String message, Object... varargs)
{
if ((privatizable == null) || (!privatizable.isPrivate())) {
fatalf(logger, message, varargs);
}
}
public static void fatalf(ILogger logger, String message, Throwable t,
Object... varargs)
{
if (logger.isFatalEnabled()) {
logger.fatal(formatMessage(message, varargs), t);
}
}
public static void fatalf(IPrivacyAware privatizable, ILogger logger,
String message, Throwable t, Object... varargs)
{
if ((privatizable == null) || (!privatizable.isPrivate())) {
fatalf(logger, message, t, varargs);
}
}
public static void errorf(ILogger logger, String message, Object...
varargs)
{
if (logger.isErrorEnabled()) {
logger.error(formatMessage(message, varargs));
}
}
public static void errorf(IPrivacyAware privatizable, ILogger logger,
String message, Object... varargs)
{
if ((privatizable == null) || (!privatizable.isPrivate())) {
errorf(logger, message, varargs);
}
}
public static void errorf(ILogger logger, String message, Throwable t,
Object... varargs)
{
if (logger.isErrorEnabled()) {
logger.error(formatMessage(message, varargs), t);
}
}
public static void errorf(IPrivacyAware privatizable, ILogger logger,
String message, Throwable t, Object... varargs)
{
if ((privatizable == null) || (!privatizable.isPrivate())) {
errorf(logger, message, t, varargs);
}
}
public static void warnf(ILogger logger, String message, Object... varargs)
{
if (logger.isWarnEnabled()) {
logger.warn(formatMessage(message, varargs));
}
}
public static void warnf(IPrivacyAware privatizable, ILogger logger,
String message, Object... varargs)
{
if ((privatizable == null) || (!privatizable.isPrivate())) {
warnf(logger, message, varargs);
}
}
public static void warnf(ILogger logger, String message, Throwable t,
Object... varargs)
{
if (logger.isWarnEnabled()) {
logger.warn(formatMessage(message, varargs), t);
}
}
public static void warnf(IPrivacyAware privatizable, ILogger logger,
String message, Throwable t, Object... varargs)
{
if ((privatizable == null) || (!privatizable.isPrivate())) {
warnf(logger, message, t, varargs);
}
}
public static void infof(ILogger logger, String message, Object... varargs)
{
if (logger.isInfoEnabled()) {
logger.info(formatMessage(message, varargs));
}
}
public static void infof(IPrivacyAware privatizable, ILogger logger,
String message, Object... varargs)
{
if ((privatizable == null) || (!privatizable.isPrivate())) {
infof(logger, message, varargs);
}
}
public static void infof(ILogger logger, String message, Throwable t,
Object... varargs)
{
if (logger.isInfoEnabled()) {
logger.info(formatMessage(message, varargs), t);
}
}
public static void infof(IPrivacyAware privatizable, ILogger logger,
String message, Throwable t, Object... varargs)
{
if ((privatizable == null) || (!privatizable.isPrivate())) {
infof(logger, message, t, varargs);
}
}
public static void debugf(ILogger logger, String message, Object...
varargs)
{
if (logger.isDebugEnabled()) {
logger.debug(formatMessage(message, varargs));
}
}
public static void debugf(IPrivacyAware privatizable, ILogger logger,
String message, Object... varargs)
{
if ((privatizable == null) || (!privatizable.isPrivate())) {
debugf(logger, message, varargs);
}
}
public static void debugf(ILogger logger, String message, Throwable t,
Object... varargs)
{
if (logger.isDebugEnabled()) {
logger.debug(formatMessage(message, varargs), t);
}
}
public static void debugf(IPrivacyAware privatizable, ILogger logger,
String message, Throwable t, Object... varargs)
{
if ((privatizable == null) || (!privatizable.isPrivate())) {
debugf(logger, message, t, varargs);
}
}
public static void tracef(ILogger logger, String message, Object...
varargs)
{
if (logger.isTraceEnabled()) {
logger.trace(formatMessage(message, varargs));
}
}
public static void tracef(IPrivacyAware privatizable, ILogger logger,
String message, Object... varargs)
{
if ((privatizable == null) || (!privatizable.isPrivate())) {
tracef(logger, message, varargs);
}
}
public static void tracef(ILogger logger, String message, Throwable t,
Object... varargs)
{
if (logger.isTraceEnabled()) {
logger.trace(formatMessage(message, varargs), t);
}
}
public static void tracef(IPrivacyAware privatizable, ILogger logger,
String message, Throwable t, Object... varargs)
{
if ((privatizable == null) || (!privatizable.isPrivate())) {
tracef(logger, message, t, varargs);
}
}
public static String expandObjectToString(Object o)
{
StringBuilder sb = build(o, new StringBuilder());
return sb.toString();
}
private static StringBuilder build(Object o, StringBuilder builder)
{
try
{
if (o == null)
{
builder.append("null");
}
else if (o.getClass().isArray())
{
build(Arrays.asList(toObjectArray(o)), builder);
}
else if ((o instanceof Iterator))
{
Iterator<?> iter = (Iterator)o;
builder.append("[");
while (iter.hasNext())
{
builder.append(" ");
build(iter.next(), builder);
}
builder.append(" ]");
}
else if ((o instanceof Enumeration))
{
Enumeration<?> enumer = (Enumeration)o;
builder.append("[");
while (enumer.hasMoreElements())
{
builder.append(" ");
build(enumer.nextElement(), builder);
}
builder.append(" ]");
}
else if ((o instanceof Collection))
{
build(((Collection)o).iterator(), builder);
}
else if ((o instanceof Map))
{
build(((Map)o).entrySet().iterator(), builder);
}
else if ((o instanceof Map.Entry))
{
Map.Entry<?, ?> entry = (Map.Entry)o;
build(entry.getKey(), builder);
builder.append("=");
build(entry.getValue(), builder);
}
else
{
builder.append(o);
}
}
catch (Exception ex)
{
getConfigLogger(LoggerUtil.class).warn("Caught while formatting Logger
output", ex);
builder.append(ex.getClass().getName())
.append(" caught while building output for ");
if (o == null) {
builder.append("a null object reference");
} else {
builder.append(o.getClass().getName()).append("@").append(Integer.toHexString(System.identityHashCode(o)));
}
builder.append(": ").append(ex.getMessage());
}
return builder;
}
static
{
WRAPPER_CLASSES.put(Integer.TYPE, Integer.class);
WRAPPER_CLASSES.put(Long.TYPE, Long.class);
WRAPPER_CLASSES.put(Short.TYPE, Short.class);
WRAPPER_CLASSES.put(Byte.TYPE, Byte.class);
WRAPPER_CLASSES.put(Float.TYPE, Float.class);
WRAPPER_CLASSES.put(Double.TYPE, Double.class);
WRAPPER_CLASSES.put(Character.TYPE, Character.class);
WRAPPER_CLASSES.put(Boolean.TYPE, Boolean.class);
}
private static Object[] toObjectArray(Object array)
{
Class<?> objectClass = array.getClass();
Class<?> componentType = objectClass.getComponentType();
Object[] retval = null;
if (componentType.isPrimitive())
{
Class<?> wrapperType = (Class)WRAPPER_CLASSES.get(componentType);
try
{
Constructor<?> oneArgInit = wrapperType.getConstructor(new Class[] {
componentType });
retval = new Object[Array.getLength(array)];
for (int i = 0; i < retval.length; i++) {
retval[i] = oneArgInit.newInstance(new Object[] { Array.get(array,
i) });
}
}
catch (NoSuchMethodException localNoSuchMethodException) {}catch
(InstantiationException localInstantiationException) {}catch
(IllegalAccessException localIllegalAccessException) {}catch
(InvocationTargetException localInvocationTargetException) {}
}
else
{
retval = (Object[])array;
}
return retval;
}
private static class DeepFormatter
{
private Object target;
DeepFormatter(Object target)
{
this.target = target;
}
public String toString()
{
return LoggerUtil.expandObjectToString(this.target);
}
}
public static ILogger getLogger(Class<?> clazz)
{
return null;
}
public static ILogger getLogger(String loggerName)
{
return null;
}
public static ILogger getUserLogger(Class<?> clazz)
{
String loggerName = "StateControl.User";
if (clazz != null)
{
String className = clazz.getName();
if (className.length() > 0) {
loggerName = loggerName + "." + className;
}
}
return getLogger(loggerName);
}
public static ILogger getUserLogger(String name)
{
String loggerName = "StateControl.User";
if ((name != null) && (name.trim().length() > 0)) {
loggerName = loggerName + "." + name.trim();
}
return getLogger(loggerName);
}
}
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]