All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.drools.logger.KnowledgeRuntimeLoggerFactory Maven / Gradle / Ivy

The newest version!
/**
 * Copyright 2010 JBoss Inc
 *
 * Licensed 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.drools.logger;

import org.drools.event.KnowledgeRuntimeEventManager;

/**
 * 

* 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. *

* *
 * KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, "logdir/mylogfile");
 * ....
 * logger.close();
 * 
* *

* Don't forget to close the logger when it is no longer needed, so resources can be released. *

* */ public class KnowledgeRuntimeLoggerFactory { private static KnowledgeRuntimeLoggerFactoryService knowledgeRuntimeLoggerFactoryService; /** * Creates a file logger in the current thread. The file is in XML format, suitable for interpretation by Eclipse's Drools Audit View * or other tools. Note that while events are written as they happen, the file will not be flushed until it is closed or the underlying * file buffer is filled. If you need real time logging then use a Console Logger or a Threaded File Logger. * * @param session * @param fileName - .log is appended to this. * @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 (in milliseconds). * The file is in XML format, suitable for interpretation by Eclipse's Drools Audit View or other tools. * * @param session * @param fileName - .log is appended to this. * @param interval - in milliseconds. * @return */ public static KnowledgeRuntimeLogger newThreadedFileLogger(KnowledgeRuntimeEventManager session, String fileName, int interval) { return getKnowledgeRuntimeLoggerProvider().newThreadedFileLogger( session, fileName, interval ); } /** * Logs events to command line console. This is not in XML format, so it cannot be parsed * by other tools, but is in real time and is more human readable. * * @param session * @return */ public static KnowledgeRuntimeLogger newConsoleLogger(KnowledgeRuntimeEventManager session) { return getKnowledgeRuntimeLoggerProvider().newConsoleLogger( session ); } private static synchronized void setKnowledgeRuntimeLoggerProvider(KnowledgeRuntimeLoggerFactoryService provider) { KnowledgeRuntimeLoggerFactory.knowledgeRuntimeLoggerFactoryService = provider; } private static synchronized KnowledgeRuntimeLoggerFactoryService getKnowledgeRuntimeLoggerProvider() { if ( knowledgeRuntimeLoggerFactoryService == null ) { loadProvider(); } return knowledgeRuntimeLoggerFactoryService; } @SuppressWarnings("unchecked") private static void loadProvider() { try { Class cls = (Class) Class.forName( "org.drools.audit.KnowledgeRuntimeLoggerProviderImpl" ); setKnowledgeRuntimeLoggerProvider( cls.newInstance() ); } catch ( Exception e ) { throw new RuntimeException( "Provider org.drools.audit.KnowledgeRuntimeLoggerProviderImpl could not be set.", e ); } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy