Include the metric type in it's name.
[beam_stats.git] / src / beam_stats_consumer_csv.erl
index b50183e..6b27106 100644 (file)
@@ -1,6 +1,7 @@
 -module(beam_stats_consumer_csv).
 
 -include("include/beam_stats.hrl").
+-include("beam_stats_logging.hrl").
 
 -behaviour(beam_stats_consumer).
 
@@ -15,8 +16,8 @@
     ]).
 
 -type option() ::
-      {path                 , file:filename()}
-    | {consumption_interval , non_neg_integer()}
+      {consumption_interval , non_neg_integer()}
+    | {path                 , file:filename()}
     .
 
 -record(state,
@@ -56,14 +57,14 @@ terminate(#state{file=FileOpt}) ->
 -spec try_to_write(state(), binary()) ->
     state().
 try_to_write(#state{file=none, path=Path}=State, _) ->
-    io:format("error: file closed: ~s~n", [Path]),
+    ?log_error("Writing to file (~p) failed: no file in state.", [Path]),
     State;
 try_to_write(#state{file={some, File}}=State, Payload) ->
     case file:write(File, Payload)
     of  ok ->
             State
     ;   {error, _}=Error ->
-            io:format("error: file:write/2 failed: ~p~n", [Error]),
+            ?log_error("file:write(~p, ~p) -> ~p", [File, Payload, Error]),
             % TODO: Maybe schedule retry?
             ok = file:close(File),
             State#state{file=none}
@@ -74,11 +75,12 @@ try_to_write(#state{file={some, File}}=State, Payload) ->
 try_to_open_if_no_file(#state{file={some, _}}=State) ->
     State;
 try_to_open_if_no_file(#state{file=none, path=Path}=State) ->
-    case file:open(Path, [append])
+    Options = [append],
+    case file:open(Path, Options)
     of  {ok, File} ->
             State#state{file = {some, File}}
     ;   {error, _}=Error ->
-            io:format("error: file:open/2 failed: ~p~n", [Error]),
+            ?log_error("file:open(~p, ~p) -> ~p", [Path, Options, Error]),
             State#state{file = none}
     end.
 
@@ -99,9 +101,9 @@ beam_stats_to_bin(#beam_stats
 ) ->
     <<TimestampBin/binary>> = timestamp_to_bin(Timestamp),
     <<NodeIDBin/binary>> = node_id_to_bin(NodeID),
-    PairToBin = make_pair_to_bin(NodeIDBin, TimestampBin),
+    MemoryPairToBin = make_pair_to_bin(NodeIDBin, TimestampBin, <<"memory">>),
     MemoryBinPairs = lists:map(fun atom_int_to_bin_bin/1, Memory),
-    MemoryBins     = lists:map(PairToBin, MemoryBinPairs),
+    MemoryBins     = lists:map(MemoryPairToBin, MemoryBinPairs),
     AllBins =
         [ MemoryBins
         ],
@@ -129,14 +131,16 @@ timestamp_to_float({ComponentMega, ComponentWhole, ComponentMicro}) ->
     TotalMicroSeconds = (TotalWholeSeconds * OneMillion) + ComponentMicro,
     TotalMicroSeconds / OneMillion.
 
--spec make_pair_to_bin(binary(), binary()) ->
+-spec make_pair_to_bin(binary(), binary(), binary()) ->
     fun(({binary(), binary()}) -> binary()).
-make_pair_to_bin(<<NodeID/binary>>, <<TimestampBin/binary>>) ->
+make_pair_to_bin(<<NodeID/binary>>, <<TimestampBin/binary>>, <<Type/binary>>) ->
     fun ({<<K/binary>>, <<V/binary>>}) ->
         << TimestampBin/binary
          , "|"
          , NodeID/binary
          , "|"
+         , Type/binary
+         , "|"
          , K/binary
          , "|"
          , V/binary
This page took 0.03286 seconds and 4 git commands to generate.