fix logger
This commit is contained in:
parent
51c7e008c1
commit
dae690b20e
@ -47,24 +47,29 @@ deploy(TaskId, ContainerDir, Params = #'ContainerDeployParams'{
|
|||||||
container_name = ContainerName,
|
container_name = ContainerName,
|
||||||
spec = #'ContainerSpec'{image = Image0}
|
spec = #'ContainerSpec'{image = Image0}
|
||||||
}) when is_integer(TaskId), is_list(ContainerDir) ->
|
}) when is_integer(TaskId), is_list(ContainerDir) ->
|
||||||
trace_log(TaskId, <<"info">>, <<"开始部署容器:"/utf8, ContainerName/binary>>),
|
report_task_event(TaskId, <<"info">>, <<"开始部署容器:"/utf8, ContainerName/binary>>),
|
||||||
try
|
try
|
||||||
ok = ensure_container_absent(TaskId, ContainerName),
|
ok = ensure_container_absent(TaskId, ContainerName),
|
||||||
{ok, _Image} = ensure_image_ready(TaskId, Image0),
|
{ok, Image} = ensure_image_ready(TaskId, Image0),
|
||||||
{ok, ContainerId} = create_container_and_config(TaskId, ContainerDir, Params),
|
{ok, ContainerId} = create_container_and_config(TaskId, ContainerDir, Params),
|
||||||
ShortContainerId = short_container_id(ContainerId),
|
ShortContainerId = short_container_id(ContainerId),
|
||||||
trace_log(TaskId, <<"info">>, <<"容器创建成功: "/utf8, ShortContainerId/binary>>),
|
report_task_event(TaskId, <<"info">>, <<"容器创建成功: "/utf8, ShortContainerId/binary>>),
|
||||||
trace_log(TaskId, <<"info">>, <<"任务完成"/utf8>>),
|
report_task_event(TaskId, <<"info">>, <<"任务完成"/utf8>>),
|
||||||
|
write_task_summary(TaskId, <<"success">>, ContainerName, Image, ContainerId),
|
||||||
efka_task_reporter:close(TaskId, ?TASK_SUCCESS)
|
efka_task_reporter:close(TaskId, ?TASK_SUCCESS)
|
||||||
catch
|
catch
|
||||||
throw:{deploy_error, Reason} ->
|
throw:{deploy_error, Reason} ->
|
||||||
trace_log(TaskId, <<"error">>, Reason),
|
report_task_event(TaskId, <<"error">>, Reason),
|
||||||
trace_log(TaskId, <<"error">>, <<"任务失败"/utf8>>),
|
report_task_event(TaskId, <<"error">>, <<"任务失败"/utf8>>),
|
||||||
|
write_task_summary(TaskId, <<"fail">>, ContainerName, Image0, undefined),
|
||||||
|
write_task_failure_reason(TaskId, Reason),
|
||||||
efka_task_reporter:close(TaskId, ?TASK_FAIL);
|
efka_task_reporter:close(TaskId, ?TASK_FAIL);
|
||||||
Class:Reason:Stacktrace ->
|
Class:Reason:Stacktrace ->
|
||||||
Error = iolist_to_binary(io_lib:format("deploy crashed: ~p:~p ~p", [Class, Reason, Stacktrace])),
|
Error = iolist_to_binary(io_lib:format("deploy crashed: ~p:~p ~p", [Class, Reason, Stacktrace])),
|
||||||
trace_log(TaskId, <<"error">>, Error),
|
report_task_event(TaskId, <<"error">>, Error),
|
||||||
trace_log(TaskId, <<"error">>, <<"任务失败"/utf8>>),
|
report_task_event(TaskId, <<"error">>, <<"任务失败"/utf8>>),
|
||||||
|
write_task_summary(TaskId, <<"fail">>, ContainerName, Image0, undefined),
|
||||||
|
write_task_failure_reason(TaskId, Error),
|
||||||
efka_task_reporter:close(TaskId, ?TASK_FAIL)
|
efka_task_reporter:close(TaskId, ?TASK_FAIL)
|
||||||
end.
|
end.
|
||||||
|
|
||||||
@ -78,27 +83,53 @@ normalize_image(Image) when is_binary(Image) ->
|
|||||||
end,
|
end,
|
||||||
iolist_to_binary(lists:join(<<"/">>, PrefixParts ++ [NormalizedLast])).
|
iolist_to_binary(lists:join(<<"/">>, PrefixParts ++ [NormalizedLast])).
|
||||||
|
|
||||||
-spec trace_log(TaskId :: integer(), Level :: binary(), Msg :: binary()) -> no_return().
|
-spec report_task_event(TaskId :: integer(), Level :: binary(), Msg :: binary()) -> ok.
|
||||||
trace_log(TaskId, Level, Msg) when is_integer(TaskId), is_binary(Level), is_binary(Msg) ->
|
report_task_event(TaskId, Level, Msg) when is_integer(TaskId), is_binary(Level), is_binary(Msg) ->
|
||||||
efka_task_reporter:stream(TaskId, Level, Msg),
|
efka_task_reporter:stream(TaskId, Level, Msg).
|
||||||
Info = iolist_to_binary([<<"task_id=">>, integer_to_binary(TaskId), <<" ">>, Level, <<" ">>, Msg]),
|
|
||||||
|
-spec write_task_summary(integer(), binary(), binary(), binary(), undefined | binary()) -> ok.
|
||||||
|
write_task_summary(TaskId, Status, ContainerName, Image, ContainerId)
|
||||||
|
when is_integer(TaskId), is_binary(Status), is_binary(ContainerName), is_binary(Image) ->
|
||||||
|
Fields0 = [
|
||||||
|
<<"type=deploy_summary">>,
|
||||||
|
<<"task_id=">>, integer_to_binary(TaskId),
|
||||||
|
<<" status=">>, Status,
|
||||||
|
<<" container_name=">>, ContainerName,
|
||||||
|
<<" image=">>, Image
|
||||||
|
],
|
||||||
|
Fields = case ContainerId of
|
||||||
|
undefined ->
|
||||||
|
Fields0;
|
||||||
|
_ when is_binary(ContainerId) ->
|
||||||
|
Fields0 ++ [<<" container_id=">>, short_container_id(ContainerId)]
|
||||||
|
end,
|
||||||
|
efka_logger:write(iolist_to_binary(Fields)).
|
||||||
|
|
||||||
|
-spec write_task_failure_reason(integer(), binary()) -> ok.
|
||||||
|
write_task_failure_reason(TaskId, Reason) when is_integer(TaskId), is_binary(Reason) ->
|
||||||
|
Info = iolist_to_binary([
|
||||||
|
<<"type=deploy_failure_reason task_id=">>,
|
||||||
|
integer_to_binary(TaskId),
|
||||||
|
<<" reason=">>,
|
||||||
|
Reason
|
||||||
|
]),
|
||||||
efka_logger:write(Info).
|
efka_logger:write(Info).
|
||||||
|
|
||||||
-spec ensure_container_absent(TaskId :: integer(), ContainerName :: binary()) -> ok.
|
-spec ensure_container_absent(TaskId :: integer(), ContainerName :: binary()) -> ok.
|
||||||
ensure_container_absent(TaskId, ContainerName) when is_integer(TaskId), is_binary(ContainerName) ->
|
ensure_container_absent(TaskId, ContainerName) when is_integer(TaskId), is_binary(ContainerName) ->
|
||||||
trace_log(TaskId, <<"info">>, <<"开始创建容器: "/utf8, ContainerName/binary>>),
|
report_task_event(TaskId, <<"info">>, <<"开始创建容器: "/utf8, ContainerName/binary>>),
|
||||||
ok.
|
ok.
|
||||||
|
|
||||||
-spec ensure_image_ready(TaskId :: integer(), Image0 :: binary()) -> {ok, binary()}.
|
-spec ensure_image_ready(TaskId :: integer(), Image0 :: binary()) -> {ok, binary()}.
|
||||||
ensure_image_ready(TaskId, Image0) when is_integer(TaskId), is_binary(Image0) ->
|
ensure_image_ready(TaskId, Image0) when is_integer(TaskId), is_binary(Image0) ->
|
||||||
Image = normalize_image(Image0),
|
Image = normalize_image(Image0),
|
||||||
trace_log(TaskId, <<"info">>, <<"使用镜像:"/utf8, Image/binary>>),
|
report_task_event(TaskId, <<"info">>, <<"使用镜像:"/utf8, Image/binary>>),
|
||||||
trace_log(TaskId, <<"info">>, <<"开始拉取镜像:"/utf8, Image/binary>>),
|
report_task_event(TaskId, <<"info">>, <<"开始拉取镜像:"/utf8, Image/binary>>),
|
||||||
CB = fun
|
CB = fun
|
||||||
({message, M}) ->
|
({message, M}) ->
|
||||||
trace_log(TaskId, <<"info">>, M);
|
report_task_event(TaskId, <<"info">>, M);
|
||||||
({error, Error}) ->
|
({error, Error}) ->
|
||||||
trace_log(TaskId, <<"error">>, Error)
|
report_task_event(TaskId, <<"error">>, Error)
|
||||||
end,
|
end,
|
||||||
case docker_commands:pull_image(Image, CB) of
|
case docker_commands:pull_image(Image, CB) of
|
||||||
ok ->
|
ok ->
|
||||||
@ -135,7 +166,7 @@ create_config_file(TaskId, ContainerDir) when is_integer(TaskId), is_list(Contai
|
|||||||
ok;
|
ok;
|
||||||
{error, Reason} ->
|
{error, Reason} ->
|
||||||
ReasonBin = list_to_binary(io_lib:format("~p", [Reason])),
|
ReasonBin = list_to_binary(io_lib:format("~p", [Reason])),
|
||||||
trace_log(TaskId, <<"notice">>, <<"创建配置文件失败: "/utf8, ReasonBin/binary>>),
|
report_task_event(TaskId, <<"notice">>, <<"创建配置文件失败: "/utf8, ReasonBin/binary>>),
|
||||||
ok
|
ok
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user