Package org.drools.logger

Source Code of org.drools.logger.KnowledgeRuntimeLoggerFactory

package org.drools.logger;

import org.drools.ProviderInitializationException;
import org.drools.event.KnowledgeRuntimeEventManager;

/**
* <p>
* The KnowledgeRuntimeLogger uses the comprehensive event system in Drools to create an audit log that can be used
* log the execution of drools for later inspection, in tools such as the Eclipse audit viewer.
* </p>
*
* <pre>
* KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, "logdir/mylogfile");
* ....
* logger.close();
* </pre>
*
* <p>
* Don't forget to close the logger when it is no longer needed, so resources can be released.
* </p>
*
*/
public class KnowledgeRuntimeLoggerFactory {

    private static KnowledgeRuntimeLoggerProvider knowledgeRuntimeLoggerProvider;

    /**
     * Creates a file logger in the current thread and events are written as they happen.
     *
     * @param session
     * @param fileName
     * @return
     */
    public static KnowledgeRuntimeLogger newFileLogger(KnowledgeRuntimeEventManager session,
                                                       String fileName) {
        return getKnowledgeRuntimeLoggerProvider().newFileLogger( session,
                                                                  fileName );
    }

    /**
     * Creates a file logger that executes in a different thread, where information is written on given intervals
     *
     * @param session
     * @param fileName
     * @param interval
     * @return
     */
    public static KnowledgeRuntimeLogger newThreadedFileLogger(KnowledgeRuntimeEventManager session,
                                                               String fileName,
                                                               int interval) {
        return getKnowledgeRuntimeLoggerProvider().newThreadedFileLogger( session,
                                                                          fileName,
                                                                          interval );
    }

    /**
     * Logs events to command line console
     *
     * @param session
     * @return
     */
    public static KnowledgeRuntimeLogger newConsoleLogger(KnowledgeRuntimeEventManager session) {
        return getKnowledgeRuntimeLoggerProvider().newConsoleLogger( session );
    }

    private static synchronized void setKnowledgeRuntimeLoggerProvider(KnowledgeRuntimeLoggerProvider provider) {
        KnowledgeRuntimeLoggerFactory.knowledgeRuntimeLoggerProvider = provider;
    }

    private static synchronized KnowledgeRuntimeLoggerProvider getKnowledgeRuntimeLoggerProvider() {
        if ( knowledgeRuntimeLoggerProvider == null ) {
            loadProvider();
        }
        return knowledgeRuntimeLoggerProvider;
    }

    @SuppressWarnings("unchecked")
    private static void loadProvider() {
        try {
            Class<KnowledgeRuntimeLoggerProvider> cls = (Class<KnowledgeRuntimeLoggerProvider>) Class.forName( "org.drools.audit.KnowledgeRuntimeLoggerProviderImpl" );
            setKnowledgeRuntimeLoggerProvider( cls.newInstance() );
        } catch ( Exception e ) {
            throw new ProviderInitializationException( "Provider org.drools.audit.KnowledgeRuntimeLoggerProviderImpl could not be set.",
                                                       e );
        }
    }

}
TOP

Related Classes of org.drools.logger.KnowledgeRuntimeLoggerFactory

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.