anchor.diff:  %%--------------------------------------------------------------------
   %% @doc Start object storage application.
   %%
  --spec start_app() ->
  -             ok | {error, any()}.
  +-spec(start_app() ->
  +             ok | {error, any()}).
   start_app() ->
       Module = leo_logger,
  -    case application:start(Module) of
  -        ok ->
  -            ?ETS_LOGGER_GROUP = ets:new(?ETS_LOGGER_GROUP,
  -                                        [named_table, bag, public, {read_concurrency,true}]),
  -            ok;
  -        {error, {already_started, Module}} ->
  -            ok;
  -        Error ->
  -            Error
  +    case whereis(leo_logger_sup) of
  +        undefined ->
  +            case application:start(Module) of
  +                ok ->
  +                    ?ETS_LOGGER_GROUP = ets:new(?ETS_LOGGER_GROUP,
  +                                                [named_table, bag, public, {read_concurrency,true}]),
  +                    ok;
  +                {error,{{already_started,_},_}} ->
  +                    ?debugVal(already_started),
  +                    ok;
  +                {error, {already_started,_}} ->
  +                    ?debugVal(already_started),
  +                    ok;
  +                Error ->
  +                    ?debugVal(Error),
  +                    Error
  +            end;
  +        _ ->
  +            ok
       end.
   
   
   %% @doc Launch a child worker
   %% @private
  --spec start_child(atom(), log_appender(), atom(), [_]) ->
  -             ok | {error, any()}.
  +-spec(start_child(atom(), log_appender(), atom(), [_]) ->
  +             ok | {error, any()}).
   start_child(Id, Appender, Callback, Props) ->
       ChildSpec = {Id,
                    {leo_logger_server, start_link,
  
positive.code: 
  %% @doc add an appender into the ets
  %%
  -spec add_appender(atom(), atom()) ->
               ok.
  add_appender(GroupId, LoggerId) ->
      catch ets:insert(?ETS_LOGGER_GROUP, {GroupId, LoggerId}),
      ok.
  
negative.code: %%--------------------------------------------------------------------
  %% @doc create a logger proc.
  %%
  -spec(new(atom(), log_appender(), atom()) ->
               ok | {error, any()}).
  new(Id, Appender, Callback) ->
      new(Id, Appender, Callback, []).
  
  -spec(new(atom(), log_appender(), atom(), [_]) ->
               ok | {error, any()}).
  new(Id, Appender, Callback, Props) ->
      ok = start_app(),
      start_child(Id, Appender, Callback, Props).
  
  
  -spec(new(atom(), log_appender(), atom(), string(), string()) ->
               ok | {error, any()}).
  new(Id, Appender, Callback, RootPath, FileName) ->
      new(Id, Appender, Callback, RootPath, FileName, 0).
  
  -spec(new(atom(), log_appender(), atom(), string(), string(), integer()) ->
               ok | {error, any()}).
  new(Id, Appender, Callback, RootPath, FileName, Level) ->
      io:format("id:~p, path:~p, filename:~p~n", [Id, RootPath, FileName]),
      ok = start_app(),
  