logframeworklistener.java

来自「OSGI这是一个中间件,与UPNP齐名,是用于移植到嵌入式平台之上」· Java 代码 · 共 165 行

JAVA
165
字号
/* * Copyright (c) 2003, KNOPFLERFISH project * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following * conditions are met: * * - Redistributions of source code must retain the above copyright *   notice, this list of conditions and the following disclaimer. * * - Redistributions in binary form must reproduce the above *   copyright notice, this list of conditions and the following *   disclaimer in the documentation and/or other materials *   provided with the distribution. * * - Neither the name of the KNOPFLERFISH project nor the names of its *   contributors may be used to endorse or promote products derived *   from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */package org.knopflerfish.bundle.log;import org.osgi.framework.Bundle;import org.osgi.framework.BundleEvent;import org.osgi.framework.BundleListener;import org.osgi.framework.FrameworkEvent;import org.osgi.framework.FrameworkListener;import org.osgi.framework.ServiceEvent;import org.osgi.framework.ServiceListener;import org.osgi.framework.ServiceReference;import org.osgi.service.log.LogService;/** * * Catch all framework generated events and add them to the log. * * <p> * Mapping from event to log entry is according to the proposal * * <b>Mapping Rules from Framework-Generated Events to Log Entries * (Draft 1)</b> * to CPEG by Jan Luehe (Sun) 2000-08-29. * The severity level of service events * for modified services has * been changed to debug since such event may be * very frequent. * * *  * @author Gatespace AB * * @version $Revision: 1.1.1.1 $ */public class LogFrameworkListener implements FrameworkListener, BundleListener,        ServiceListener {    private final LogReaderServiceFactory lrsf;    public LogFrameworkListener(LogReaderServiceFactory lrsf) {        this.lrsf = lrsf;    }    /**     * * The framework event callback method inserts all framework events * into     * the log. * * Events of type <code>error</code> are logged at the error     * level * other event types are logged on the info level. *     * <p>     * FrameworkListener callback. *     *      * @param fe     *            the framework event that has occured.     */    public void frameworkEvent(FrameworkEvent fe) {        int level = LogService.LOG_INFO;        String msg = null;        Throwable thr = null;        switch (fe.getType()) {        case FrameworkEvent.ERROR:            msg = "FrameworkEvent ERROR";            level = LogService.LOG_ERROR;            thr = fe.getThrowable();            break;        case FrameworkEvent.STARTED:            msg = "FrameworkEvent STARTED";            level = LogService.LOG_INFO;            break;        case FrameworkEvent.STARTLEVEL_CHANGED:            msg = "FrameworkEvent STARTLEVEL_CHANGED";            level = LogService.LOG_INFO;            break;        case FrameworkEvent.PACKAGES_REFRESHED:            msg = "FrameworkEvent PACKAGES_REFRESHED";            level = LogService.LOG_INFO;            break;        default:            msg = "FrameworkEvent <" + fe.getType() + ">";            level = LogService.LOG_WARNING;            break;        }        lrsf.log(new LogEntryImpl(fe.getBundle(), level, msg, thr));    }    /**     * * The bundle event callback method inserts all bundle events * into the     * log. * * Events are all assinged the log level info, *     *      * @param be     *            the bundle event that has occured.     */    public void bundleChanged(BundleEvent be) {        String msg = null;        switch (be.getType()) {        case BundleEvent.INSTALLED:            msg = "BundleEvent INSTALLED";            break;        case BundleEvent.STARTED:            msg = "BundleEvent STARTED";            break;        case BundleEvent.STOPPED:            msg = "BundleEvent STOPPED";            break;        case BundleEvent.UNINSTALLED:            msg = "BundleEvent UNINSTALLED";            break;        case BundleEvent.UPDATED:            msg = "BundleEvent UPDATED";            break;        }        lrsf.log(new LogEntryImpl(be.getBundle(), LogService.LOG_INFO, msg));    }    /**     * * The service event callback method inserts all service events * into the     * log. * * Event of types REGISTERED, UNREGISTERED are assinged the log     * level info. Events of type MODIFIED are assigned the log level DEBUG. *     *      * @param se     *            the service event that has occured.     */    public void serviceChanged(ServiceEvent se) {        ServiceReference sr = se.getServiceReference();        Bundle bundle = sr.getBundle();        String msg = null;        int level = LogService.LOG_INFO;        switch (se.getType()) {        case ServiceEvent.REGISTERED:            msg = "ServiceEvent REGISTERED";            break;        case ServiceEvent.UNREGISTERING:            msg = "ServiceEvent UNREGISTERING";            break;        case ServiceEvent.MODIFIED:            msg = "ServiceEvent MODIFIED";            level = LogService.LOG_DEBUG;            break;        }        lrsf.log(new LogEntryImpl(bundle, sr, level, msg));    }}// end of class LogFrameworkListener

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?