Package org.geoserver.logging

Source Code of org.geoserver.logging.LoggingInitializer

/* (c) 2014 Open Source Geospatial Foundation - all rights reserved
* (c) 2001 - 2013 OpenPlans
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.logging;

import java.util.List;
import java.util.logging.Logger;

import org.geoserver.config.ConfigurationListenerAdapter;
import org.geoserver.config.GeoServer;
import org.geoserver.config.GeoServerInitializer;
import org.geoserver.config.LoggingInfo;
import org.geoserver.platform.GeoServerExtensions;
import org.geoserver.platform.GeoServerResourceLoader;
import org.geotools.util.logging.Logging;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;

/**
* Initializes GeoServer logging functionality based on configuration settings.
*
* @author Justin Deoliveira, The Open Planning Project
*
*/
public class LoggingInitializer implements GeoServerInitializer, ApplicationContextAware {

    /**
     * logging instance
     */
    static Logger LOGGER = Logging.getLogger( "org.geoserver.logging");
   
    GeoServerResourceLoader resourceLoader;

    Boolean relinquishLoggingControl;
   
    public void setResourceLoader(GeoServerResourceLoader resourceLoader) {
        this.resourceLoader = resourceLoader;
    }
   
    public void initialize(GeoServer geoServer) throws Exception {
        geoServer.addListener( new ConfigurationListenerAdapter() {

            @Override
            public void handleLoggingChange(LoggingInfo logging, List<String> propertyNames,
                List<Object> oldValues, List<Object> newValues) {
           
                //TODO: get rid of this hack checking singleton
                if (!relinquishLoggingControl ) {
                    boolean reload = false;
                    String loggingLevel = logging.getLevel();
                    String loggingLocation = logging.getLocation();
                    Boolean stdOutLogging = logging.isStdOutLogging();
                   
                    if ( propertyNames.contains( "level") ) {
                        loggingLevel = (String) newValues.get( propertyNames.indexOf( "level" ) );
                        reload = true;
                    }
                    if ( propertyNames.contains( "location") ) {
                        loggingLocation = (String) newValues.get( propertyNames.indexOf( "location" ) );
                        reload = true;
                    }
                    if ( propertyNames.contains( "stdOutLogging" ) ) {
                        stdOutLogging = (Boolean) newValues.get( propertyNames.indexOf( "stdOutLogging" ) );
                        reload = true;
                    }
                    // maintain the system variable overlay
                    loggingLocation = LoggingUtils.getLogFileLocation(loggingLocation);
                  
                    if ( reload ) {
                        try {
                            LoggingUtils.initLogging(resourceLoader, loggingLevel, !stdOutLogging, loggingLocation);
                        }
                        catch (Exception e) {
                            throw new RuntimeException( e );
                        }
                    }
                   
                }
            }
        });
    }

    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        String strValue = GeoServerExtensions.getProperty(LoggingUtils.RELINQUISH_LOG4J_CONTROL,
                applicationContext);
        relinquishLoggingControl = Boolean.valueOf(strValue);
    }
}
TOP

Related Classes of org.geoserver.logging.LoggingInitializer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.