Skip to content

Commit

Permalink
[PAXLOGGING-220] Calls to the underlying backends should be done insi…
Browse files Browse the repository at this point in the history
…de a priviledged block
  • Loading branch information
gnodet committed Oct 20, 2016
1 parent b8d9587 commit b559e68
Show file tree
Hide file tree
Showing 4 changed files with 171 additions and 242 deletions.
Expand Up @@ -17,6 +17,8 @@
*/
package org.ops4j.pax.logging.log4j2.internal;

import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.Map;

import org.apache.logging.log4j.Level;
Expand Down Expand Up @@ -128,147 +130,122 @@ private void clearDelegateContext()
ThreadContext.clearMap();
}

public void trace( String message, Throwable t )
private void doLog(final Level level, final int svcLevel, final String fqcn, final String message, final Throwable t ) {
if (System.getSecurityManager() != null) {
AccessController.doPrivileged(
new PrivilegedAction<Void>() {
public Void run() {
doLog0( level, svcLevel, fqcn, message, t );
return null;
}
}
);
} else {
doLog0( level, svcLevel, fqcn, message, t );
}
}

private void doLog0( Level level, int svcLevel, final String fqcn, String message, Throwable t ) {
setDelegateContext();
Message msg = m_delegate.getMessageFactory().newMessage(message);
m_delegate.logMessage(fqcn, level, null, msg, t);
clearDelegateContext();
m_service.handleEvents( m_bundle, null, svcLevel, message, t );
}

public void trace(final String message, final Throwable t )
{
if( isTraceEnabled() )
{
setDelegateContext();
Message msg = m_delegate.getMessageFactory().newMessage(message);
m_delegate.logMessage(m_fqcn, Level.TRACE, null, msg, t);
clearDelegateContext();
m_service.handleEvents( m_bundle, null, LogService.LOG_DEBUG, message, t );
doLog( Level.TRACE, LogService.LOG_DEBUG, m_fqcn, message, t );
}
}

public void debug( String message, Throwable t )
{
if( isDebugEnabled() )
{
setDelegateContext();
Message msg = m_delegate.getMessageFactory().newMessage(message);
m_delegate.logMessage(m_fqcn, Level.DEBUG, null, msg, t);
clearDelegateContext();
m_service.handleEvents( m_bundle, null, LogService.LOG_DEBUG, message, t );
doLog( Level.DEBUG, LogService.LOG_DEBUG, m_fqcn, message, t );
}
}

public void inform( String message, Throwable t )
{
if( isInfoEnabled() )
{
setDelegateContext();
Message msg = m_delegate.getMessageFactory().newMessage(message);
m_delegate.logMessage(m_fqcn, Level.INFO, null, msg, t);
clearDelegateContext();
m_service.handleEvents( m_bundle, null, LogService.LOG_INFO, message, t );
doLog( Level.INFO, LogService.LOG_INFO, m_fqcn, message, t );
}
}

public void warn( String message, Throwable t )
{
if( isWarnEnabled() )
{
setDelegateContext();
Message msg = m_delegate.getMessageFactory().newMessage(message);
m_delegate.logMessage(m_fqcn, Level.WARN, null, msg, t);
clearDelegateContext();
m_service.handleEvents( m_bundle, null, LogService.LOG_WARNING, message, t );
doLog( Level.WARN, LogService.LOG_WARNING, m_fqcn, message, t );
}
}

public void error( String message, Throwable t )
{
if( isErrorEnabled() )
{
setDelegateContext();
Message msg = m_delegate.getMessageFactory().newMessage(message);
m_delegate.logMessage(m_fqcn, Level.ERROR, null, msg, t);
clearDelegateContext();
m_service.handleEvents( m_bundle, null, LogService.LOG_ERROR, message, t );
doLog( Level.ERROR, LogService.LOG_ERROR, m_fqcn, message, t );
}
}

public void fatal( String message, Throwable t )
{
if( isFatalEnabled() )
{
setDelegateContext();
Message msg = m_delegate.getMessageFactory().newMessage(message);
m_delegate.logMessage(m_fqcn, Level.FATAL, null, msg, t);
clearDelegateContext();
m_service.handleEvents( m_bundle, null, LogService.LOG_ERROR, message, t );
doLog( Level.FATAL, LogService.LOG_ERROR, m_fqcn, message, t );
}
}

public void trace( String message, Throwable t, String fqcn )
{
if( isTraceEnabled() )
{
setDelegateContext();
Message msg = m_delegate.getMessageFactory().newMessage(message);
m_delegate.logMessage(fqcn, Level.TRACE, null, msg, t);
clearDelegateContext();
m_service.handleEvents( m_bundle, null, LogService.LOG_DEBUG, message, t );
doLog( Level.TRACE, LogService.LOG_DEBUG, fqcn, message, t );
}
}

public void debug( String message, Throwable t, String fqcn )
{
if( isDebugEnabled() )
{
setDelegateContext();
Message msg = m_delegate.getMessageFactory().newMessage(message);
m_delegate.logMessage(fqcn, Level.DEBUG, null, msg, t);
clearDelegateContext();
m_service.handleEvents( m_bundle, null, LogService.LOG_DEBUG, message, t );
doLog( Level.DEBUG, LogService.LOG_DEBUG, fqcn, message, t );
}
}

public void inform( String message, Throwable t, String fqcn )
{
if( isInfoEnabled() )
{
setDelegateContext();
Message msg = m_delegate.getMessageFactory().newMessage(message);
m_delegate.logMessage(fqcn, Level.INFO, null, msg, t);
clearDelegateContext();
m_service.handleEvents( m_bundle, null, LogService.LOG_INFO, message, t );
doLog( Level.INFO, LogService.LOG_INFO, fqcn, message, t );
}
}

public void warn( String message, Throwable t, String fqcn )
{
if( isWarnEnabled() )
{
setDelegateContext();
Message msg = m_delegate.getMessageFactory().newMessage(message);
m_delegate.logMessage(fqcn, Level.WARN, null, msg, t);
clearDelegateContext();
m_service.handleEvents( m_bundle, null, LogService.LOG_WARNING, message, t );
doLog( Level.WARN, LogService.LOG_WARNING, fqcn, message, t );
}
}

public void error( String message, Throwable t, String fqcn )
{
if( isErrorEnabled() )
{
setDelegateContext();
Message msg = m_delegate.getMessageFactory().newMessage(message);
m_delegate.logMessage(fqcn, Level.ERROR, null, msg, t);
clearDelegateContext();
m_service.handleEvents( m_bundle, null, LogService.LOG_ERROR, message, t );
doLog( Level.ERROR, LogService.LOG_ERROR, fqcn, message, t );
}
}

public void fatal( String message, Throwable t, String fqcn )
{
if( isFatalEnabled() )
{
setDelegateContext();
Message msg = m_delegate.getMessageFactory().newMessage(message);
m_delegate.logMessage(fqcn, Level.FATAL, null, msg, t);
clearDelegateContext();
m_service.handleEvents( m_bundle, null, LogService.LOG_ERROR, message, t );
doLog( Level.FATAL, LogService.LOG_ERROR, fqcn, message, t );
}
}

Expand Down

0 comments on commit b559e68

Please sign in to comment.