diff --git a/core/src/main/java/org/jboss/logmanager/CallerClassLoaderLogContextSelector.java b/core/src/main/java/org/jboss/logmanager/CallerClassLoaderLogContextSelector.java index 5216f9bd..ea98f153 100644 --- a/core/src/main/java/org/jboss/logmanager/CallerClassLoaderLogContextSelector.java +++ b/core/src/main/java/org/jboss/logmanager/CallerClassLoaderLogContextSelector.java @@ -118,7 +118,8 @@ private LogContext check(final ClassLoader classLoader) { */ @Override public LogContext getLogContext() { - return AccessController.doPrivileged(logContextAction); + return System.getSecurityManager() == null? logContextAction.run() : + AccessController.doPrivileged(logContextAction); } /** diff --git a/core/src/main/java/org/jboss/logmanager/ClassLoaderLogContextSelector.java b/core/src/main/java/org/jboss/logmanager/ClassLoaderLogContextSelector.java index 640b458c..7ccb7c79 100644 --- a/core/src/main/java/org/jboss/logmanager/ClassLoaderLogContextSelector.java +++ b/core/src/main/java/org/jboss/logmanager/ClassLoaderLogContextSelector.java @@ -118,7 +118,8 @@ private LogContext check(final ClassLoader classLoader) { * with any log context. */ public LogContext getLogContext() { - return AccessController.doPrivileged(logContextAction); + return System.getSecurityManager() == null? logContextAction.run() : + AccessController.doPrivileged(logContextAction); } /** diff --git a/core/src/main/java/org/jboss/logmanager/ContextClassLoaderLogContextSelector.java b/core/src/main/java/org/jboss/logmanager/ContextClassLoaderLogContextSelector.java index e47a03f1..27b08aae 100644 --- a/core/src/main/java/org/jboss/logmanager/ContextClassLoaderLogContextSelector.java +++ b/core/src/main/java/org/jboss/logmanager/ContextClassLoaderLogContextSelector.java @@ -69,7 +69,8 @@ public LogContext run() { }; public LogContext getLogContext() { - return doPrivileged(logContextAction); + return System.getSecurityManager() == null? logContextAction.run() : + doPrivileged(logContextAction); } /** diff --git a/core/src/main/java/org/jboss/logmanager/formatters/Formatters.java b/core/src/main/java/org/jboss/logmanager/formatters/Formatters.java index b2897c16..0f677e45 100644 --- a/core/src/main/java/org/jboss/logmanager/formatters/Formatters.java +++ b/core/src/main/java/org/jboss/logmanager/formatters/Formatters.java @@ -811,26 +811,33 @@ public static FormatStep exceptionFormatStep(final boolean leftJustify, final in public static FormatStep exceptionFormatStep(final boolean leftJustify, final int minimumWidth, final boolean truncateBeginning, final int maximumWidth, final String argument, final boolean extended) { return new JustifyingFormatStep(leftJustify, minimumWidth, truncateBeginning, maximumWidth) { public void renderRaw(Formatter formatter, final StringBuilder builder, final ExtLogRecord record) { - doPrivileged(new PrivilegedAction() { - public Void run() { - final Throwable t = record.getThrown(); - if (t != null) { - int depth = -1; - if (argument != null) { - try { - depth = Integer.parseInt(argument); - } catch (NumberFormatException ignore) { - } - } - StackTraceFormatter.renderStackTrace(builder, t, extended, depth); + if (System.getSecurityManager() != null) + doPrivileged(new PrivilegedAction() { + public Void run() { + doExceptionFormatStep(builder, record, argument, extended); + return null; } - return null; - } - }); + }); + else + doExceptionFormatStep(builder, record, argument, extended); } }; } + private static void doExceptionFormatStep(final StringBuilder builder, final ExtLogRecord record, final String argument, final boolean extended) { + final Throwable t = record.getThrown(); + if (t != null) { + int depth = -1; + if (argument != null) { + try { + depth = Integer.parseInt(argument); + } catch (NumberFormatException ignore) { + } + } + StackTraceFormatter.renderStackTrace(builder, t, extended, depth); + } + } + /** * Create a format step which emits the log message resource key (if any) with the given justification rules. *