Java tutorial
/* * #%L * Mojo's Maven plugin for Cobertura * %% * Copyright (C) 2005 - 2013 Codehaus * %% * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * #L% */ package org.codehaus.mojo.cobertura.integration.shell; import org.apache.maven.plugin.logging.Log; import org.codehaus.mojo.cobertura.integration.LogLevel; import java.io.PrintWriter; import java.io.StringWriter; /** * @author <a href="mailto:lj@jguru.se">Lennart Jörelid</a>, jGuru Europe AB */ public class StringBufferLog implements Log { // Internal state private StringBuffer buffer = new StringBuffer(); private LogLevel logLevel = LogLevel.INFO; public void setLogLevel(LogLevel level) { this.logLevel = level; } public StringBuffer getBuffer() { return buffer; } /** * {@inheritDoc} */ public boolean isDebugEnabled() { return isLoggable(LogLevel.DEBUG); } /** * {@inheritDoc} */ public void debug(final CharSequence content) { checkAndLog(LogLevel.DEBUG, content); } /** * {@inheritDoc} */ public void debug(final CharSequence content, final Throwable error) { checkAndLog(LogLevel.DEBUG, content); checkAndLog(LogLevel.DEBUG, error); } /** * {@inheritDoc} */ public void debug(final Throwable error) { checkAndLog(LogLevel.DEBUG, error); } /** * {@inheritDoc} */ public boolean isInfoEnabled() { return isLoggable(LogLevel.INFO); } /** * {@inheritDoc} */ public void info(final CharSequence content) { checkAndLog(LogLevel.INFO, content); } /** * {@inheritDoc} */ public void info(final CharSequence content, final Throwable error) { checkAndLog(LogLevel.INFO, content); checkAndLog(LogLevel.INFO, error); } /** * {@inheritDoc} */ public void info(final Throwable error) { checkAndLog(LogLevel.INFO, error); } /** * {@inheritDoc} */ public boolean isWarnEnabled() { return isLoggable(LogLevel.WARNING); } /** * {@inheritDoc} */ public void warn(final CharSequence content) { checkAndLog(LogLevel.WARNING, content); } /** * {@inheritDoc} */ public void warn(final CharSequence content, final Throwable error) { checkAndLog(LogLevel.WARNING, content); checkAndLog(LogLevel.WARNING, error); } /** * {@inheritDoc} */ public void warn(final Throwable error) { checkAndLog(LogLevel.WARNING, error); } /** * {@inheritDoc} */ public boolean isErrorEnabled() { return isLoggable(LogLevel.ERROR); } /** * {@inheritDoc} */ public void error(final CharSequence content) { checkAndLog(LogLevel.ERROR, content); } /** * {@inheritDoc} */ public void error(final CharSequence content, final Throwable error) { checkAndLog(LogLevel.ERROR, content); checkAndLog(LogLevel.ERROR, error); } /** * {@inheritDoc} */ public void error(final Throwable error) { checkAndLog(LogLevel.ERROR, error); } // // Private helpers // private boolean isLoggable(LogLevel checkLevel) { return checkLevel.compareTo(logLevel) >= 0; } private void checkAndLog(final LogLevel fromLevel, final Throwable throwable) { final StringWriter stringWriter = new StringWriter(); throwable.printStackTrace(new PrintWriter(stringWriter)); if (isLoggable(fromLevel)) { buffer.append("[").append(fromLevel.toString().toLowerCase()).append("]: ") .append(stringWriter.toString()).append("\n"); } } private void checkAndLog(final LogLevel fromLevel, final CharSequence content) { if (isLoggable(fromLevel)) { buffer.append("[").append(fromLevel.toString().toLowerCase()).append("]: ").append(content) .append("\n"); } } }