001package org.javasimon.utils; 002 003import org.javasimon.Split; 004import org.javasimon.StopwatchSample; 005import org.javasimon.callback.CallbackSkeleton; 006 007import java.util.logging.Level; 008import java.util.logging.Logger; 009 010/** 011 * LoggingCallback logs events via JDK logging API. 012 * 013 * @author <a href="mailto:virgo47@gmail.com">Richard "Virgo" Richter</a> 014 */ 015@SuppressWarnings("UnusedDeclaration") 016public class LoggingCallback extends CallbackSkeleton { 017 018 private Logger logger = Logger.getAnonymousLogger(); 019 private Level level = Level.FINE; 020 021 /** Logs Simon start on a specified log level. */ 022 @Override 023 public void onStopwatchStart(Split split) { 024 logger.log(level, "SIMON START: " + split.getStopwatch()); 025 } 026 027 /** Logs Simon stop on a specified log level. */ 028 @Override 029 public void onStopwatchStop(Split split, StopwatchSample sample) { 030 logger.log(level, "SIMON STOP: " + sample.simonToString() + " (" + split.runningFor() + ")"); 031 } 032 033 /** 034 * Logs the warning on a specified log level. 035 * 036 * @param warning warning message 037 * @param cause throwable cause 038 */ 039 @Override 040 public void onManagerWarning(String warning, Exception cause) { 041 logger.log(level, "SIMON WARNING: " + warning, cause); 042 } 043 044 /** 045 * Logs the message on a specified log level. 046 * 047 * @param message message 048 */ 049 @Override 050 public void onManagerMessage(String message) { 051 logger.log(level, "SIMON MESSAGE: " + message); 052 } 053 054 /** 055 * Returns logger used to log messages. 056 * 057 * @return used logger 058 */ 059 public Logger getLogger() { 060 return logger; 061 } 062 063 /** 064 * Sets the logger that will be used to log messages. 065 * 066 * @param logger new specified logger 067 */ 068 public void setLogger(Logger logger) { 069 this.logger = logger; 070 } 071 072 /** 073 * Sets the logger by the name of the logger - used by the configure facility to configure the callback. 074 * 075 * @param logger name of the logger 076 */ 077 public void setLogger(String logger) { 078 this.logger = Logger.getLogger(logger); 079 } 080 081 /** 082 * Returns the specified log level for messages. 083 * 084 * @return log level for messages 085 */ 086 public Level getLevel() { 087 return level; 088 } 089 090 /** 091 * Sets the level that will be used to log messages. 092 * 093 * @param level log level used to log messages 094 */ 095 public void setLevel(Level level) { 096 this.level = level; 097 } 098 099 /** 100 * Sets the level via level name - used by the configure facility to configure the callback. 101 * 102 * @param level name of the level 103 */ 104 public void setLevel(String level) { 105 this.level = Level.parse(level); 106 } 107}