Package com.opengamma.util.metric

Source Code of com.opengamma.util.metric.OpenGammaMetricRegistry

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

import java.util.concurrent.TimeUnit;

import org.slf4j.LoggerFactory;

import com.codahale.metrics.JmxReporter;
import com.codahale.metrics.MetricRegistry;
import com.codahale.metrics.Slf4jReporter;
import com.opengamma.util.ArgumentChecker;

/**
* Contains the {@link MetricRegistry} that should be used by OpenGamma components at runtime.
* The component system will configure this at startup.
*/
public final class OpenGammaMetricRegistry {

  private static MetricRegistry s_summaryInstance;
  private static MetricRegistry s_detailedInstance;

  /**
   * Creates an instance.
   */
  private OpenGammaMetricRegistry() {
  }

  //-------------------------------------------------------------------------
  public static MetricRegistry getSummaryInstance() {
    initializeIfNecessary();
    return s_summaryInstance;
  }

  public static MetricRegistry getDetailedInstance() {
    initializeIfNecessary();
    return s_detailedInstance;
  }
 
  /**
   * Sets the summary registry.
   * This should only be set at startup.
   *
   * @param metricRegistry  the registry, not null
   */
  public static synchronized void setSummaryRegistry(MetricRegistry metricRegistry) {
    ArgumentChecker.notNull(metricRegistry, "metricRegistry");
    s_summaryInstance = metricRegistry;
  }

  /**
   * Sets the detailed registry.
   * This should only be set at startup.
   *
   * @param metricRegistry  the registry, not null
   */
  public static synchronized void setDetailedRegistry(MetricRegistry metricRegistry) {
    ArgumentChecker.notNull(metricRegistry, "metricRegistry");
    s_detailedInstance = metricRegistry;
  }

  /**
   * Creates a basic registry.
   */
  public static synchronized void createBasicDebuggingRegistry() {
    s_summaryInstance = new MetricRegistry();
    s_detailedInstance = s_summaryInstance;
    Slf4jReporter logReporter = Slf4jReporter.forRegistry(s_summaryInstance)
                                          .outputTo(LoggerFactory.getLogger(OpenGammaMetricRegistry.class))
                                          .convertRatesTo(TimeUnit.SECONDS)
                                          .convertDurationsTo(TimeUnit.MILLISECONDS)
                                          .build();
    logReporter.start(1, TimeUnit.MINUTES);
    JmxReporter jmxReporter = JmxReporter.forRegistry(s_summaryInstance).build();
    jmxReporter.start();
  }

  private static void initializeIfNecessary() {
    if (s_summaryInstance == null) {
      createBasicDebuggingRegistry();
    }
  }

}
TOP

Related Classes of com.opengamma.util.metric.OpenGammaMetricRegistry

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.