%%% %%% Copyright 2011, Boundary %%% %%% 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. %%% %%%------------------------------------------------------------------- %%% File: folsom.erl %%% @author joe williams %%% @doc %%% @end %%%------------------------------------------------------------------ -module(folsom). -export([start/0, stop/0]). -export([start/2, stop/1]). -behaviour(application). -define(APP, ?MODULE). start() -> application:start(?APP). stop() -> application:stop(?APP). start(_Type, _Args) -> {ok, Pid} = folsom_sup:start_link(), lists:foreach(fun configure/1, [{counter, new_counter}, {gauge, new_gauge}, {histogram, new_histogram}, {history, new_history}, {meter, new_meter}, {meter_reader, new_meter_reader}]), {ok, Pid}. stop(_State) -> ok. %% internal configure({K, New}) -> case application:get_env(?APP, K) of {ok, Specs} when is_list(Specs) -> [configure_metric(New, Spec) || Spec <- Specs]; {ok, Spec} -> configure_metric(New, Spec); undefined -> ok end. configure_metric(New, Spec) when is_list(Spec) -> apply(folsom_metrics, New, Spec); configure_metric(New, Name) -> folsom_metrics:New(Name).