/*
* Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com
* The software in this package is published under the terms of the CPAL v1.0
* license, a copy of which has been included with this distribution in the
* LICENSE.txt file.
*/
package org.mule.runtime.core.interceptor;
import org.mule.runtime.api.exception.MuleException;
import org.mule.runtime.core.api.Event;
import org.mule.runtime.core.api.interceptor.Interceptor;
import org.mule.runtime.core.processor.AbstractInterceptingMessageProcessor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* <code>TimerInterceptor</code> simply times and displays the time taken to process an event.
*/
public class TimerInterceptor extends AbstractInterceptingMessageProcessor implements Interceptor {
/**
* logger used by this class
*/
private static Logger logger = LoggerFactory.getLogger(TimerInterceptor.class);
@Override
public Event process(Event event) throws MuleException {
long startTime = System.currentTimeMillis();
Event resultEvent = processNext(event);
if (logger.isInfoEnabled()) {
long executionTime = System.currentTimeMillis() - startTime;
logger.info(flowConstruct.getName() + " took " + executionTime + "ms to process event [" + resultEvent + "]");
}
return resultEvent;
}
}