001 /* 002 * Copyright 2007-2008 The Kuali Foundation 003 * 004 * Licensed under the Educational Community License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/ecl2.php 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 package org.kuali.rice.ken.util; 017 018 import org.apache.commons.lang.time.DurationFormatUtils; 019 import org.apache.commons.lang.time.StopWatch; 020 import org.apache.log4j.Logger; 021 022 /** 023 * Wrapper for the Log4J performance log 024 * @author Kuali Rice Team (rice.collab@kuali.org) 025 */ 026 public final class PerformanceLog { 027 private static final Logger LOG = Logger.getLogger("Performance"); 028 029 /** 030 * This class 031 * @author Kuali Rice Team (rice.collab@kuali.org) 032 */ 033 public static final class PerformanceStopWatch { 034 private StopWatch stopWatch = new StopWatch(); 035 private String message; 036 037 /** 038 * Constructs a PerformanceLog.java. 039 * @param message 040 */ 041 public PerformanceStopWatch(String message) { 042 this.message = message; 043 stopWatch.start(); 044 } 045 046 /** 047 * This method records the duration of how long a message delivery takes. 048 */ 049 public void recordDuration() { 050 logDuration(message, stopWatch.getTime()); 051 } 052 } 053 054 /** 055 * This method returns an instance of the logger object. 056 * @return Logger 057 */ 058 public static Logger getInstance() { 059 return LOG; 060 } 061 062 /** 063 * This method returns a new stop watch instance. 064 * @param message 065 * @return PerformanceStopWatch 066 */ 067 public static PerformanceStopWatch startTimer(String message) { 068 return new PerformanceStopWatch(message); 069 } 070 071 /** 072 * This method logs the duration information for a given message. 073 * @param message 074 * @param duration 075 */ 076 public static void logDuration(String message, long duration) { 077 LOG.info(message + ": " + DurationFormatUtils.formatDurationHMS(duration) + " (" + duration+ " ms)"); 078 } 079 }