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