Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Licensed to the Apache Software Foundation (ASF) under one
   * or more contributor license agreements.  See the NOTICE file
   * distributed with this work for additional information
   * regarding copyright ownership.  The ASF licenses this file
   * to you 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.apache.sling.engine.impl.log;
 
 
 import  org.osgi.framework.BundleContext;
 import  org.osgi.service.component.ComponentContext;

The RequestLoggerService is a factory component which gets configuration to register loggers for the RequestLogger.
 
 @Component(metatype=true,label="%request.log.service.name",
         description="%request.log.service.description", configurationFactory=true,
         policy=.)
     @Property(name="service.description",value="Factory for configuration based request/access loggers"),
     @Property(name="service.vendor",value="The Apache Software Foundation")
 })
 
 public class RequestLoggerService {
 
     @Property
     public static final String PARAM_FORMAT = "request.log.service.format";
 
     @Property(value="request.log")
     public static final String PARAM_OUTPUT = "request.log.service.output";
 
     @Property(intValue=0,options={
             @PropertyOption(name = "0", value = "Logger Name"),
             @PropertyOption(name = "1", value = "File Name"),
             @PropertyOption(name = "2", value = "RequestLog Service")
     })
     public static final String PARAM_OUTPUT_TYPE = "request.log.service.outputtype";
 
     @Property(boolValue=false)
     public static final String PARAM_ON_ENTRY = "request.log.service.onentry";
 
     private static final int OUTPUT_TYPE_LOGGER = 0;
 
     private static final int OUTPUT_TYPE_FILE = 1;
 
     private static final int OUTPUT_TYPE_CLASS = 2;
 
     private boolean onEntry;
 
     private CustomLogFormat logFormat;
 
     private RequestLog log;

    
Public default constructor for SCR integration
 
     public RequestLoggerService() {
     }
 
     RequestLoggerService(BundleContext bundleContextDictionary<StringObjectconfiguration) {
         this.setup(bundleContextconfiguration);
     }
 
     void setup(BundleContext bundleContextDictionary<StringObjectconfiguration) {
         // whether to log on request entry or request exit
         Object onEntryObject = configuration.get();
         this. = (onEntryObject instanceof Boolean)
                 ? ((BooleanonEntryObject).booleanValue()
                 : false;
 
         // shared or private CustomLogFormat
         Object format = configuration.get();
         if (format != null) {
            this. = new CustomLogFormat(format.toString());
        }
        // where to log to
        Object output = configuration.get();
        if (output != null) {
            Object outputTypeObject = configuration.get();
            int outputType = (outputTypeObject instanceof Number)
                    ? ((NumberoutputTypeObject).intValue()
                    : ;
            this. = this.getLog(bundleContextoutput.toString(), outputType);
        }
    }
    void shutdown() {
        if (this. != null) {
            this..close();
            this. = null;
        }
        this. = null;
    }
    void log(SlingHttpServletRequest requestSlingHttpServletResponseImpl response) {
        if (this. != null && this. != null) {
            this..write(this..format(requestresponse));
        }
    }
    boolean isOnEntry() {
        return this.;
    }
    // ---------- SCR integration ----------------------------------------------
    @SuppressWarnings("unchecked")
    protected void activate(ComponentContext context) {
        this.setup(context.getBundleContext(), context.getProperties());
    }
    protected void deactivate(ComponentContext context) {
        this.shutdown();
    }
    private RequestLog getLog(BundleContext bundleContextString output,
            int outputType) {
        switch (outputType) {
            case :
                // file logging
                try {
                    return new FileRequestLog(output);
                } catch (IOException ioe) {
                    // TODO: log
                }
                break;
            case :
                // only try to use service if we have a bundle context
                if (bundleContext != null) {
                    return new RequestLogServiceFacade(bundleContextoutput);
                }
                break;
            case :
            default:
                return new LoggerRequestLog(output);
        }
        // fallback in case of issue or so...
        return null;
    }
New to GrepCode? Check out our FAQ X