Skip to content

Commit

Permalink
Handle publication errors property
Browse files Browse the repository at this point in the history
  • Loading branch information
dmlloyd committed Jun 17, 2020
1 parent 2187390 commit a4c302b
Showing 1 changed file with 19 additions and 1 deletion.
20 changes: 19 additions & 1 deletion core/src/main/java/org/jboss/logmanager/LoggerNode.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,15 @@
import org.wildfly.common.ref.Reaper;
import org.wildfly.common.ref.Reference;

import java.lang.reflect.UndeclaredThrowableException;
import java.util.Collection;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
import java.util.logging.ErrorManager;
import java.util.logging.Filter;
import java.util.logging.Handler;
import java.util.logging.Level;
Expand All @@ -46,6 +48,7 @@ public void reap(Reference<Logger, LoggerNode> reference) {
reference.getAttachment().activeLoggers.remove(reference);
}
};
private static final StackTraceElement[] EMPTY_STACK = new StackTraceElement[0];

/**
* The log context.
Expand Down Expand Up @@ -386,7 +389,22 @@ void publish(final ExtLogRecord record) {
} catch (VirtualMachineError e) {
throw e;
} catch (Throwable t) {
// todo - error handler
ErrorManager errorManager = handler.getErrorManager();
if (errorManager != null) {
Exception e;
if (t instanceof Exception) {
e = (Exception) t;
} else {
e = new UndeclaredThrowableException(t);
e.setStackTrace(EMPTY_STACK);
}
try {
errorManager.error("Handler publication threw an exception", e, ErrorManager.WRITE_FAILURE);
} catch (Throwable t2) {
System.err.println("Handler.reportError caught:");
t2.printStackTrace();
}
}
}
if (useParentHandlers) {
final LoggerNode parent = this.parent;
Expand Down

0 comments on commit a4c302b

Please sign in to comment.