All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.ops4j.pax.logging.slf4j.Slf4jMDCAdapter Maven / Gradle / Ivy

/*
 * Copyright 2006 Niclas Hedhman.
 *
 * Licensed  under the  Apache License,  Version 2.0  (the "License");
 * you may not use  this file  except in  compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed  under the  License is distributed on an "AS IS" BASIS,
 * WITHOUT  WARRANTIES OR CONDITIONS  OF ANY KIND, either  express  or
 * implied.
 *
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.ops4j.pax.logging.slf4j;

import java.util.Map;
import org.slf4j.spi.MDCAdapter;
import org.osgi.framework.BundleContext;
import org.ops4j.pax.logging.PaxContext;
import org.ops4j.pax.logging.PaxLoggingManager;
import org.ops4j.pax.logging.OSGIPaxLoggingManager;

public class Slf4jMDCAdapter
    implements MDCAdapter
{

    private static PaxContext m_context;
    private static PaxContext m_defaultContext = new PaxContext();

    private static PaxLoggingManager m_paxLogging;
    public static void setBundleContext( BundleContext ctx )
    {
        m_paxLogging = new OSGIPaxLoggingManager( ctx );
        // We need to instruct all loggers to ensure the SimplePaxLoggingManager is replaced.
        m_paxLogging.open();
    }

    /**
      * For all the methods that operate against the context, return true if the MDC should use the PaxContext object from the PaxLoggingManager,
      * or if the logging manager is not set, or does not have its context available yet, use a default context local to this MDC.
      * @return m_context if the MDC should use the PaxContext object from the PaxLoggingManager,
      * or m_defaultContext if the logging manager is not set, or does not have its context available yet.
      */
    private static PaxContext getContext(){
        if( m_context==null && m_paxLogging!=null ){
            m_context=(m_paxLogging.getPaxLoggingService()!=null)?m_paxLogging.getPaxLoggingService().getPaxContext():null;
        }
        return m_context!=null?m_context:m_defaultContext;
    }

    public void put( String key, String val )
    {
        getContext().put(key, val);
    }

    public String get( String key )
    {
		Object value = null;
        return ( (value = getContext().get(key) ) != null ) ? value.toString() : null;
    }

    public void remove( String key )
    {
        getContext().remove(key);
    }

    public void clear()
    {
        getContext().clear();
    }

    public Map getCopyOfContextMap()
    {
        return getContext().getCopyOfContextMap();
    }

    public void setContextMap( Map contextMap )
    {
        getContext().setContextMap(contextMap);
    }

    /** Pax Logging internal method. Should never be used directly. */
    public static void dispose()
    {
        m_paxLogging.close();
        m_paxLogging.dispose();
        m_paxLogging = null;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy