/*! ****************************************************************************** * * Pentaho Data Integration * * Copyright (C) 2002-2016 by Pentaho : http://www.pentaho.com * ******************************************************************************* * * 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.pentaho.di.core.logging; import java.util.ArrayList; import java.util.List; import org.apache.log4j.Level; import org.apache.log4j.spi.LoggingEvent; /** * * @deprecated As of release 7.0, no longer needed. This class does not used in kettle5-log4j-plugin's project */ @Deprecated public class CentralLogStore { /** * Create the central log store with optional limitation to the size * * @param maxSize the maximum size * @param maxLogTimeoutMinutes The maximum time that a log line times out in Minutes. */ private CentralLogStore( int maxSize, int maxLogTimeoutMinutes ) { KettleLogStore.init( maxSize, maxLogTimeoutMinutes ); } public void replaceLogCleaner( final int maxLogTimeoutMinutes ) { KettleLogStore.getInstance().replaceLogCleaner( maxLogTimeoutMinutes ); } /** * Initialize the central log store with optional limitation to the size * * @param maxSize the maximum size * @param maxLogTimeoutHours The maximum time that a log line times out in hours. */ public static void init( int maxSize, int maxLogTimeoutMinutes ) { KettleLogStore.init( maxSize, maxLogTimeoutMinutes ); } public static void init() { KettleLogStore.init(); } /** * @return the number (sequence, 1..N) of the last log line. * If no records are present in the buffer, 0 is returned. */ public static int getLastBufferLineNr() { return KettleLogStore.getLastBufferLineNr(); } /** * * Get all the log lines pertaining to the specified parent log channel id (including all children) * * @param parentLogChannelId the parent log channel ID to grab * @param includeGeneral include general log lines * @param from * @param to * @return the log lines found */ public static List<LoggingEvent> getLogBufferFromTo( String parentLogChannelId, boolean includeGeneral, int from, int to ) { List<KettleLoggingEvent> events = KettleLogStore.getLogBufferFromTo( parentLogChannelId, includeGeneral, from, to ); return convertKettleLoggingEventsToLog4jLoggingEvents( events ); } private static List<LoggingEvent> convertKettleLoggingEventsToLog4jLoggingEvents( List<KettleLoggingEvent> events ) { LogWriter logWriter = LogWriter.getInstance(); // Copy the events over for compatibility List<LoggingEvent> list = new ArrayList<LoggingEvent>(); for ( KettleLoggingEvent event : events ) { LoggingEvent loggingEvent = new LoggingEvent( logWriter.getPentahoLogger().getClass().getName(), logWriter.getPentahoLogger(), // Category is deprecated event.getTimeStamp(), convertKettleLogLevelToLog4jLevel( event.getLevel() ), event.getMessage(), null ); list.add( loggingEvent ); } return list; } private static Level convertKettleLogLevelToLog4jLevel( LogLevel level ) { switch ( level ) { case BASIC: return Level.INFO; case DETAILED: return Level.INFO; case DEBUG: return Level.DEBUG; case ROWLEVEL: return Level.DEBUG; case MINIMAL: return Level.INFO; case ERROR: return Level.ERROR; case NOTHING: return Level.OFF; default: return Level.INFO; } } /** * Get all the log lines for the specified parent log channel id (including all children) * * @param channelId channel IDs to grab * @param includeGeneral include general log lines * @param from * @param to * @return */ public static List<LoggingEvent> getLogBufferFromTo( List<String> channelId, boolean includeGeneral, int from, int to ) { return convertKettleLoggingEventsToLog4jLoggingEvents( KettleLogStore.getLogBufferFromTo( channelId, includeGeneral, from, to ) ); } /* * This method will no longer be available in the Kettle 5 API * * @return The appender that represents the central logging store. It is capable of giving back log rows in an incremental fashion, etc. * public static Log4jBufferAppender getAppender() { return getInstance().appender; } */ /** * Discard all the lines for the specified log channel id AND all the children. * * @param parentLogChannelId the parent log channel id to be removed along with all its children. */ public static void discardLines( String parentLogChannelId, boolean includeGeneralMessages ) { KettleLogStore.discardLines( parentLogChannelId, includeGeneralMessages ); } }