Compare commits
4 Commits
e8233561c6
..
master
| Author | SHA1 | Date | |
|---|---|---|---|
| c32533dcb5 | |||
| 9ff7fcb02d | |||
| d08650f325 | |||
| 9f2b0ca46b |
+26
-7
@@ -7,6 +7,7 @@
|
||||
]).
|
||||
|
||||
-export([ note_flow/1
|
||||
, get_flow/0
|
||||
, ct_log/2 %% ct_log(Fmt, Args)
|
||||
, ct_log/3 %% ct_log(Flow, Fmt, Args)
|
||||
, timestamp/0 ]).
|
||||
@@ -44,9 +45,14 @@ get(Key, Default) ->
|
||||
erase(Key) ->
|
||||
gm_ctflow_state:erase(Key).
|
||||
|
||||
|
||||
-spec note_flow(flow()) -> 'ok'.
|
||||
note_flow(Flow) ->
|
||||
erlang:put({?MODULE, flow}, Flow).
|
||||
erlang:put({?MODULE, flow}, Flow),
|
||||
ok.
|
||||
|
||||
-spec get_flow() -> flow() | 'undefined'.
|
||||
get_flow() ->
|
||||
erlang:get({?MODULE, flow}).
|
||||
|
||||
ct_log(Fmt, Args) ->
|
||||
ct_log(erlang:get({?MODULE, flow}), Fmt, Args).
|
||||
@@ -55,13 +61,19 @@ ct_log(Flow, Fmt, Args) ->
|
||||
TS = timestamp(),
|
||||
case Flow of
|
||||
undefined ->
|
||||
save_log(undefined, TS, Fmt, Args),
|
||||
maybe_save_log_no_flow(TS, Fmt, Args),
|
||||
ct:log(Fmt, Args);
|
||||
Flow ->
|
||||
save_log(Flow, TS, Fmt, Args),
|
||||
ct:log("~p[~w]: " ++ Fmt, [Flow, self()|Args])
|
||||
end.
|
||||
|
||||
|
||||
maybe_save_log_no_flow(TS, Fmt, Args) ->
|
||||
try save_log(undefined, TS, Fmt, Args)
|
||||
catch
|
||||
error:_ ->
|
||||
ok
|
||||
end.
|
||||
|
||||
save_log(Flow, TS, Fmt, Args) ->
|
||||
gm_ctflow_log:log(Flow, TS, Fmt, Args).
|
||||
@@ -136,13 +148,20 @@ timestamp() ->
|
||||
[Year,Month,Day,Hour,Min,Sec,MilliSec])).
|
||||
|
||||
spawn(F) ->
|
||||
Flow = get_flow(),
|
||||
proc_lib:spawn(fun() ->
|
||||
maybe_inherit_flow(Flow),
|
||||
ct_util:mark_process(),
|
||||
F()
|
||||
end).
|
||||
|
||||
spawn_opt(F, Opts) ->
|
||||
Flow = get_flow(),
|
||||
proc_lib:spawn_opt(fun() ->
|
||||
ct_util:mark_process(),
|
||||
F()
|
||||
end, Opts).
|
||||
maybe_inherit_flow(Flow),
|
||||
ct_util:mark_process(),
|
||||
F()
|
||||
end, Opts).
|
||||
|
||||
maybe_inherit_flow(undefined) -> ok;
|
||||
maybe_inherit_flow(Flow) -> note_flow(Flow).
|
||||
|
||||
Reference in New Issue
Block a user