001 /*
002 @license.text@
003 */
004 package biz.hammurapi.logging;
005
006 /**
007 * @author Pavel Vlasov
008 * @version $Revision: 1.2 $
009 */
010 public class ConsoleLogger implements Logger {
011 public static final int DEBUG=0;
012 public static final int VERBOSE=1;
013 public static final int INFO=2;
014 public static final int WARN=3;
015 public static final int ERROR=4;
016
017 private int level;
018
019 /**
020 * Default constructor with INFO level.
021 */
022 public ConsoleLogger() {
023 level=INFO;
024 }
025
026 public ConsoleLogger(String level) {
027 if ("DEBUG".equalsIgnoreCase(level)) {
028 this.level=DEBUG;
029 } else if ("VERBOSE".equalsIgnoreCase(level)) {
030 this.level=VERBOSE;
031 } else if ("INFO".equalsIgnoreCase(level)) {
032 this.level=INFO;
033 } else if ("WARN".equalsIgnoreCase(level)) {
034 this.level=WARN;
035 } else if ("ERROR".equalsIgnoreCase(level)) {
036 this.level=ERROR;
037 } else {
038 throw new IllegalArgumentException("Invalid level: "+level);
039 }
040
041
042 }
043
044 public ConsoleLogger(int level) {
045 if (level<DEBUG || level>ERROR) {
046 throw new IllegalArgumentException("Invalid level: "+level);
047 }
048 this.level=level;
049 }
050
051 public void debug(Object source, String message) {
052 if (level<=DEBUG) {
053 System.out.println("[DEBUG] "+source+" "+message);
054 }
055 }
056
057 public void verbose(Object source, String message) {
058 if (level<=VERBOSE) {
059 System.out.println("[VERBOSE] "+source+" "+message);
060 }
061 }
062
063 public void info(Object source, String message) {
064 if (level<=INFO) {
065 System.out.println("[INFO] "+source+" "+message);
066 }
067 }
068
069 public void warn(Object source, String message) {
070 if (level<=WARN) {
071 System.out.println("[WARN] "+source+" "+message);
072 if (source instanceof Throwable) {
073 ((Throwable) source).printStackTrace();
074 }
075 }
076 }
077
078 public void error(Object source, String message) {
079 if (level<=ERROR) {
080 System.out.println("[ERROR] "+source+" "+message);
081 if (source instanceof Throwable) {
082 ((Throwable) source).printStackTrace();
083 }
084 }
085 }
086 }