package org.richfaces.cdk; import java.lang.reflect.Method; public class CustomLogger implements Logger { private static final boolean INFO = true; private static final boolean WARN = true; private static final boolean ERROR = true; private boolean debug = false; private int errorCount = 0; private Throwable firstError; @Override public boolean isDebugEnabled() { return debug; } public void setDebugEnabled(boolean enabled) { this.debug = enabled; } @Override public void debug(CharSequence content) { debug(content, null); } @Override public void debug(Throwable error) { debug(null, error); } @Override public void debug(CharSequence content, Throwable error) { log("Debug", content, error); } @Override public boolean isInfoEnabled() { return INFO; } @Override public void info(CharSequence content) { info(content, null); } @Override public void info(Throwable error) { info(null, error); } @Override public void info(CharSequence content, Throwable error) { log("Info", content, error); } @Override public boolean isWarnEnabled() { return WARN; } @Override public void warn(CharSequence content) { warn(content, null); } @Override public void warn(Throwable error) { warn(null, error); } @Override public void warn(CharSequence content, Throwable error) { log("Warn", content, error); } @Override public boolean isErrorEnabled() { return ERROR; } @Override public void error(CharSequence content) { error(content, null); } @Override public void error(Throwable error) { error(null, error); } @Override public void error(CharSequence content, Throwable error) { errorCount += 1; firstError = (error != null) ? error : new CdkException(content.toString()); log("Error", content, error); } @Override public int getErrorCount() { return errorCount; } private void log(String severity, CharSequence content, Throwable error) { if (!isEnabled(severity)) { return; } if (content != null) { System.out.println("[" + severity.toUpperCase() + "] " + content); } else { System.out.println("[" + severity.toUpperCase() + "] "); } if (error != null) { error.printStackTrace(); } } private boolean isEnabled(String severity) { try { Method method = this.getClass().getMethod("is" + severity + "Enabled"); return (Boolean) method.invoke(this); } catch (Exception e) { throw new IllegalStateException(e); } } @Override public Throwable getFirstError() { return firstError; } }