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; }
@Override public void eventAdded( KettleLoggingEvent event ) { switch ( event.getLevel() ) { case ERROR: pentahoLogger.log( Level.ERROR, event.getMessage() ); break; case DEBUG: case ROWLEVEL: pentahoLogger.log( Level.DEBUG, event.getMessage() ); break; default: pentahoLogger.log( Level.INFO, event.getMessage() ); break; } }
public void doAppend( KettleLoggingEvent event ) { if ( event.getMessage() instanceof LogMessage ) { lock.writeLock().lock(); try { buffer.add( new BufferLine( event ) ); while ( bufferSize > 0 && buffer.size() > bufferSize ) { buffer.remove( 0 ); } } finally { lock.writeLock().unlock(); } } }
@Test public void test() throws Exception { LogChannelFileWriter writer = new LogChannelFileWriter( id, fileObject, false ); LoggingRegistry.getInstance().getLogChannelFileWriterBuffer( id ).addEvent( new KettleLoggingEvent( logMessage, System.currentTimeMillis(), LogLevel.BASIC ) ); writer.flush(); verify( outputStream ).write( captor.capture() ); String arguments = new String( captor.getValue() ); assertTrue( arguments.contains( logMessage ) ); }
@Override public void eventAdded( KettleLoggingEvent event ) { String logText = layout.format( event ); if ( event.getLevel() == LogLevel.ERROR ) { KettleLogStore.OriginalSystemErr.println( logText ); } else { KettleLogStore.OriginalSystemOut.println( logText ); } } }
/** * It looks like this method is not used in the project. */ @Deprecated public String dump() { StringBuilder buf = new StringBuilder( 50000 ); lock.readLock().lock(); try { buffer.forEach( line -> { LogMessage message = (LogMessage) line.getEvent().getMessage(); buf.append( message.getLogChannelId() ).append( "\t" ) .append( message.getSubject() ).append( "\n" ); } ); return buf.toString(); } finally { lock.readLock().unlock(); } }
if ( le.getLevel() == LogLevel.ERROR ) { buff.append( le.getMessage().toString() ).append( "\n" );
@Override Void doCall() { for ( int i = 0; i < 5000; i++ ) { buffer.addLogggingEvent( new KettleLoggingEvent( new LogMessage( "subject", LogLevel.DEBUG ), System.currentTimeMillis(), LogLevel.DEBUG ) ); } return null; } }
private static String getLogChId( BufferLine bufferLine ) { return ( (LogMessage) bufferLine.getEvent().getMessage() ).getLogChannelId(); } }
KettleLoggingEvent loggingEvent = new KettleLoggingEvent( logMessage, System.currentTimeMillis(), logLevel ); KettleLogStore.getAppender().addLogggingEvent( loggingEvent );
@Override public void eventAdded( KettleLoggingEvent event ) { try { Object messageObject = event.getMessage(); if ( messageObject instanceof LogMessage ) { boolean logToFile = false; if ( logChannelId == null ) { logToFile = true; } else { LogMessage message = (LogMessage) messageObject; // This should be fast enough cause cached. List<String> logChannelChildren = LoggingRegistry.getInstance().getLogChannelChildren( logChannelId ); // This could be non-optimal, consider keeping the list sorted in the logging registry logToFile = Const.indexOfString( message.getLogChannelId(), logChannelChildren ) >= 0; } if ( logToFile ) { String logText = layout.format( event ); outputStream.write( logText.getBytes() ); outputStream.write( Const.CR.getBytes() ); } } } catch ( Exception e ) { exception = new KettleException( "Unable to write to logging event to file '" + filename + "'", e ); } }
@Override public void run() { for ( StepMetaDataCombi combi : trans.getSteps() ) { if ( combi.step.getErrors() > 0 ) { String channelId = combi.step.getLogChannel().getLogChannelId(); List<KettleLoggingEvent> eventList = KettleLogStore.getLogBufferFromTo( channelId, false, 0, KettleLogStore.getLastBufferLineNr() ); StringBuilder logText = new StringBuilder(); for ( KettleLoggingEvent event : eventList ) { Object message = event.getMessage(); if ( message instanceof LogMessage ) { LogMessage logMessage = (LogMessage) message; if ( logMessage.isError() ) { logText.append( logMessage.getMessage() ).append( Const.CR ); } } } stepLogMap.put( combi.stepMeta, logText.toString() ); } } } } );
Object object = event.getMessage(); if ( object instanceof LogMessage ) { LogMessage message = (LogMessage) object;
@Override public void eventAdded( KettleLoggingEvent event ) { Object messageObject = event.getMessage(); checkNotNull( messageObject, "Expected log message to be defined." ); if ( messageObject instanceof LogMessage ) { LogMessage message = (LogMessage) messageObject; LoggingObjectInterface loggingObject = logObjProvider.apply( message.getLogChannelId() ); if ( loggingObject == null ) { // this can happen if logObject has been discarded while log events are still in flight. logToLogger( diLogger, message.getLevel(), message.getSubject() + " " + message.getMessage() ); } else if ( loggingObject.getObjectType() == TRANS || loggingObject.getObjectType() == STEP || loggingObject.getObjectType() == DATABASE ) { logToLogger( transLogger, message.getLevel(), loggingObject, message ); } else if ( loggingObject.getObjectType() == JOB || loggingObject.getObjectType() == JOBENTRY ) { logToLogger( jobLogger, message.getLevel(), loggingObject, message ); } } }