Package com.opengamma.component

Source Code of com.opengamma.component.ComponentLogger$Slf4JLogger

/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.component;

import org.slf4j.Logger;

import com.opengamma.OpenGammaRuntimeException;
import com.opengamma.util.ArgumentChecker;

/**
* A simple logger for component startup.
* <p>
* The component system is a bootstrapping system and so has its own logger.
*/
public interface ComponentLogger {

  /**
   * Logs a verbose info message.
   *
   * @param message  the string message, not null
   */
  void logDebug(final String message);

  /**
   * Logs a normal info message.
   *
   * @param message  the string message, not null
   */
  void logInfo(final String message);

  /**
   * Logs a warning message.
   *
   * @param message  the string message, not null
   */
  void logWarn(final String message);

  /**
   * Logs an error.
   *
   * @param message  the string message, not null
   */
  void logError(final String message);

  /**
   * Logs an error.
   *
   * @param throwable  the exception, not null
   */
  void logError(final Throwable throwable);

  //-------------------------------------------------------------------------
  /**
   * Logger that outputs no logging.
   */
  public static final class Sink implements ComponentLogger {
    /**
     * Singleton instance of a sink logger.
     */
    public static final ComponentLogger INSTANCE = new Sink();

    private Sink() {
    }

    @Override
    public void logDebug(String message) {
      // do nothing
    }

    @Override
    public void logInfo(String message) {
      // do nothing
    }

    @Override
    public void logWarn(String message) {
      // do nothing
    }

    @Override
    public void logError(String message) {
      // do nothing
    }

    @Override
    public void logError(Throwable throwable) {
      // do nothing
    }
  }

  //-------------------------------------------------------------------------
  /**
   * Logger that throws an exception for errors.
   */
  public static final class Throws implements ComponentLogger {
    /**
     * Singleton instance of a sink logger.
     */
    public static final ComponentLogger INSTANCE = new Throws();

    private Throws() {
    }

    @Override
    public void logDebug(String message) {
      // do nothing
    }

    @Override
    public void logInfo(String message) {
      // do nothing
    }

    @Override
    public void logWarn(String message) {
      // do nothing
    }

    @Override
    public void logError(String message) {
      throw new OpenGammaRuntimeException(message);
    }

    @Override
    public void logError(Throwable throwable) {
      throw new OpenGammaRuntimeException(throwable.getMessage(), throwable);
    }
  }

  //-------------------------------------------------------------------------
  /**
   * Logger that outputs to the console.
   */
  public static final class Console implements ComponentLogger {
    /**
     * Singleton instance of a verbose logger.
     */
    public static final ComponentLogger VERBOSE = new Console(3);

    /**
     * The verbosity.
     */
    private final int _verbosity;

    /**
     * Creates an instance.
     * <p>
     * Level 0 is errors only.<br />
     * Level 1 is errors and warnings only.<br />
     * Level 2 is normal info and above.<br />
     * Level 3 is verbose info and above.<br />
     *
     * @param verbosity  the verbosity level, 0 to 3
     */
    public Console(int verbosity) {
      _verbosity = verbosity;
    }

    @Override
    public void logDebug(String message) {
      if (_verbosity >= 3) {
        System.out.println(message);
      }
    }

    @Override
    public void logInfo(String message) {
      if (_verbosity >= 2) {
        System.out.println(message);
      }
    }

    @Override
    public void logWarn(String message) {
      if (_verbosity >= 1) {
        System.out.println(message);
      }
    }

    @Override
    public void logError(String message) {
      System.err.println(message);
    }

    @Override
    public void logError(Throwable throwable) {
      throwable.printStackTrace(System.err);
    }
  }

  //-------------------------------------------------------------------------
  /**
   * Logger that outputs to a real logger.
   */
  public static class Slf4JLogger implements ComponentLogger {
    private final Logger _logger;
   
    /**
     * Creates an instance.
     *
     * @param logger  the logger, not null
     */
    public Slf4JLogger(Logger logger) {
      ArgumentChecker.notNull(logger, "logger");
      _logger = logger;
    }

    @Override
    public void logDebug(String message) {
      _logger.debug(message);
    }

    @Override
    public void logInfo(String message) {
      _logger.info(message);
    }

    @Override
    public void logWarn(String message) {
      _logger.warn(message);
    }

    @Override
    public void logError(String message) {
      _logger.error(message);
    }

    @Override
    public void logError(Throwable throwable) {
      _logger.error(throwable.getMessage(), throwable);
    }
  }

}
TOP

Related Classes of com.opengamma.component.ComponentLogger$Slf4JLogger

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.