Author: ravn Date: Sun Jan 11 14:11:01 2009 New Revision: 1264 Modified: slf4j/trunk/slf4j-ext/src/main/java/org/slf4j/instrumentation/ToStringHelper.java
Log: Experimented with detecting recursive calls on the same object, but it didn't work well. Ended up adding recommendation to disable logging for troublesome classes in the log backend configuration. Modified: slf4j/trunk/slf4j-ext/src/main/java/org/slf4j/instrumentation/ToStringHelper.java ============================================================================== --- slf4j/trunk/slf4j-ext/src/main/java/org/slf4j/instrumentation/ToStringHelper.java (original) +++ slf4j/trunk/slf4j-ext/src/main/java/org/slf4j/instrumentation/ToStringHelper.java Sun Jan 11 14:11:01 2009 @@ -42,13 +42,16 @@ * don't have usable toString methods. * * @param o + * incoming object to render. * @return */ + public static String render(Object o) { if (o == null) { return String.valueOf(o); } Class<?> objectClass = o.getClass(); + if (unrenderableClasses.containsKey(objectClass) == false) { try { if (objectClass.isArray()) { @@ -58,12 +61,15 @@ } } catch (Exception e) { Long now = new Long(System.currentTimeMillis()); + System.err.println("Disabling exception throwing class " + objectClass.getName() + ", " + e.getMessage()); + unrenderableClasses.put(objectClass, now); } } - return o.getClass().getName() + "@" + Integer.toHexString(o.hashCode()); + String name = o.getClass().getName(); + return name + "@" + Integer.toHexString(o.hashCode()); } /** _______________________________________________ dev mailing list dev@slf4j.org http://www.slf4j.org/mailman/listinfo/dev