/*
* Copyright 2012 The Solmix Project
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.gnu.org/licenses/
* or see the FSF site: http://www.fsf.org.
*/
package org.solmix.launch.base.web;
import javax.servlet.ServletContext;
import org.apache.felix.framework.Logger;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleException;
import org.osgi.framework.ServiceReference;
/**
*
* @author Administrator
* @version 110035 2012-3-18
*/
public class ServletContextLogger extends Logger
{
private ServletContext servletContext;
/**
* @param servletContext
*/
protected ServletContextLogger(ServletContext servletContext)
{
this.servletContext = servletContext;
}
@Override
protected void doLog(Bundle bundle, ServiceReference sr, int level, String msg, Throwable throwable) {
// unwind throwable if it is a BundleException
if ((throwable instanceof BundleException) && (((BundleException) throwable).getNestedException() != null)) {
throwable = ((BundleException) throwable).getNestedException();
}
String s = (sr == null) ? null : "SvcRef " + sr;
s = (s == null) ? null : s + " Bundle '" + bundle.getBundleId() + "'";
s = (s == null) ? msg : s + " " + msg;
s = (throwable == null) ? s : s + " (" + throwable + ")";
switch (level) {
case LOG_DEBUG:
servletContext.log("DEBUG: " + s);
break;
case LOG_ERROR:
if (throwable == null) {
servletContext.log("ERROR: " + s);
} else {
servletContext.log("ERROR: " + s, throwable);
}
break;
case LOG_INFO:
servletContext.log("INFO: " + s);
break;
case LOG_WARNING:
servletContext.log("WARNING: " + s);
break;
default:
servletContext.log("UNKNOWN[" + level + "]: " + s);
}
}
}