diff --git a/config_example/sys.config b/config_example/sys.config
index 8d62088..3c88045 100644
--- a/config_example/sys.config
+++ b/config_example/sys.config
@@ -1,25 +1,4 @@
 [
- 	%% SASL config    {file, "log/sasl-error.log"}
- 	{sasl, [
-         {sasl_error_logger, false},
-         {errlog_type, error},
-         {error_logger_mf_dir, "log/sasl-error.log"},      % Log directory
-         {error_logger_mf_maxbytes, 104857600},   % 100 MB max file size
-         {error_logger_mf_maxfiles, 5}           % 5 files max
-        ]},
-    {emysql,[
-      {lock_timeout,900000},
-      {default_timeout, 900000}
-
-      ]},
-    {lager, [
-        {log_root, "./logs"},
-        {handlers, [
-            {lager_console_backend, debug},
-            {lager_file_backend, [{file, "error.log"}, {level, error}]},
-            {lager_file_backend, [{file, "console.log"}, {level, info}]}
-        ]}
-    ]},
     {dubboerl,[
         {zookeeper_list,[{"127.0.0.1",2181}]},
         {application,<<"testdubboerl">>},
diff --git a/config_example/vm.args b/config_example/vm.args
index 7134fa4..8c8b2ed 100644
--- a/config_example/vm.args
+++ b/config_example/vm.args
@@ -1,9 +1,8 @@
 ## Name of the node
-##需要定义 -name android_connecion_1@logic1.mpush.paf
 -name dubboerl@127.0.0.1
 
 ## Cookie for distributed erlang
--setcookie fb65338cf25a2d68a2da5207f718cdfa
+-setcookie test_cookie
 
 ## Heartbeat management; auto-restarts VM if it dies or becomes unresponsive
 ## (Disabled by default..use with caution!)
diff --git a/rebar.config b/rebar.config
index 943367e..d71e7e6 100644
--- a/rebar.config
+++ b/rebar.config
@@ -1,6 +1,4 @@
-{erl_opts, [debug_info,
-    {parse_transform, lager_transform}
-    ]}.
+{erl_opts, [debug_info]}.
 
 {lib_dirs, []}.
 {base_dir, "_build"}.
@@ -12,7 +10,6 @@
 
 {deps, [
     {erlzk, ".*", {git, "https://github.com/huaban/erlzk.git", {tag, "v0.6.2"}}},
-    {lager, ".*", {git, "https://github.com/basho/lager.git", {tag, "3.2.4"}}},
     {ranch, ".*",  {git, "https://github.com/ninenines/ranch.git", {tag, "1.4.0"}}},
     {poolboy, ".*",  {git, "https://github.com/devinus/poolboy.git", {tag, "1.5.1"}}},
     {jiffy, "0.15.1"}
diff --git a/src/de_codec.erl b/src/de_codec.erl
index 8cc4136..44afe81 100644
--- a/src/de_codec.erl
+++ b/src/de_codec.erl
@@ -26,7 +26,7 @@
 
 -spec encode_request(#dubbo_request{})->{ok,binary()} | {error,term()}.
 encode_request(Request)->
-%%    lager:debug("encode request ~p",[Request]),
+%%    logger:debug("encode request ~p",[Request]),
     {ok,RequestData} = encode_request_data(Request#dubbo_request.serialize_type,Request),
     Size = byte_size(RequestData),
     Header = encode_header(Request,Size,0),
@@ -218,9 +218,9 @@
 %%        2 ->
 %%            {ok,Res#dubbo_response{data = null,decode_state = State}};
 %%        _->
-%%            lager:warning("decode unkonw type ~p ~p",[Type,Rest]),
+%%            logger:warning("decode unkonw type ~p ~p",[Type,Rest]),
 %%            {Rest2,Object2,DecodeState2} = hessianDecode2:decode(Rest,State),
-%%            lager:warning("decode unkonw type2 ~p ~p",[Object2,Rest2]),
+%%            logger:warning("decode unkonw type2 ~p ~p",[Object2,Rest2]),
 %%            {ok,Res#dubbo_response{data = Object2,decode_state = DecodeState2}}
 %%    end;
 %%decode_response(?SERIALIZATION_HESSIAN,dubbo_event,Res,Data)->
@@ -269,7 +269,7 @@
 %%    AttachmentsList = dict:to_list(Attachments#map.dict),
 %%    decode_request_body(List,Rest,State1,[AttachmentsList] ++ ResultList);
 %%decode_request_body([_Type1|List],Data,State,ResultList)->
-%%    lager:warning("decode_request_body unknow type"),
+%%    logger:warning("decode_request_body unknow type"),
 %%    decode_request_body(List,Data,State, ResultList);
 %%decode_request_body([],Data,State,ResultList)->
 %%    {ResultList,State,Data}.
diff --git a/src/de_type_transfer.erl b/src/de_type_transfer.erl
index 5d89dcc..6be3d17 100644
--- a/src/de_type_transfer.erl
+++ b/src/de_type_transfer.erl
@@ -37,7 +37,7 @@
                     list_to_tuple( [NativeTupeName] ++ NativeData)
             end;
         Info ->
-            lager:warning("java_to_native error:~p",[Info]),
+            logger:warning("java_to_native error:~p",[Info]),
             error
     end;
 java_to_native(#list{values = ForeignData}=Data,State)->
@@ -49,18 +49,18 @@
 %%                false->
 %%                    error;
 %%                #type_def{fieldnames = NativeFields,native_type = NativeTupeName}->
-%%                    lager:debug("test ForeignType ~p NativeTupeName ~p",[ForeignType,NativeTupeName]),
+%%                    logger:debug("test ForeignType ~p NativeTupeName ~p",[ForeignType,NativeTupeName]),
 %%%%                    AsDict = dict:from_list(lists:zip(ObjectFields,ForeignDataNew)),
 %%%%                    NativeData = [dict:fetch(atom_to_binary(Key,utf8),AsDict) || Key <- NativeFields],
 %%%%                    list_to_tuple( [NativeTupeName] ++ NativeData)
 %%                    ForeignDataNew
 %%            end;
 %%        Info ->
-%%            lager:warning("java_to_native list error:~p",[Info]),
+%%            logger:warning("java_to_native list error:~p",[Info]),
 %%            error
 %%    end;
 java_to_native(Data,_)->
-    lager:debug("java_to_native unkonw type ~p",[Data]),
+    logger:debug("java_to_native unkonw type ~p",[Data]),
     Data.
 
 %%get_deftype([Item |DefTypeList],ForeignType)->
@@ -76,13 +76,13 @@
 
     case type_register:lookup_foreign_type(ForeignType) of
         undefined->
-            lager:debug("get deftype undefined ~p",[ForeignType]),
+            logger:debug("get deftype undefined ~p",[ForeignType]),
             false;
         #type_def{}=TypeDef->
-            lager:debug("get deftype success ~p",[ForeignType]),
+            logger:debug("get deftype success ~p",[ForeignType]),
             TypeDef;
         _->
-            lager:debug("get deftype  undefined ~p",[ForeignType]),
+            logger:debug("get deftype  undefined ~p",[ForeignType]),
             false
     end.
 
@@ -90,14 +90,14 @@
     Type = #type_def{native_type = NativeType,foreign_type = ForeignType,fieldnames = FieldsNames},
 %%            Type2=type_decoding:hash_store(Type),
     type_register:regiest_foreign_native(Type),
-    lager:debug("pre_process_typedef ~p,~p",[NativeType,ForeignType]).
+    logger:debug("pre_process_typedef ~p,~p",[NativeType,ForeignType]).
 %%    case type_decoding:resolve_native_type(ForeignType) of
 %%        undefined ->
 %%%%            Type = #type_def{native_type = NativeType, foreign_type = ForeignType, fieldnames = record_info(fields,NativeType)},
 %%            Type = #type_def{native_type = NativeType,foreign_type = ForeignType,fieldnames = FieldsNames},
 %%            Type2=type_decoding:hash_store(Type),
 %%
-%%            lager:debug("pre_process_typedef ~p,~p",[NativeType,ForeignType]);
+%%            logger:debug("pre_process_typedef ~p,~p",[NativeType,ForeignType]);
 %%            type_decoding:store_typepool(Type2);
 %%        _->
 %%            ok
diff --git a/src/dubbo_consumer_pool.erl b/src/dubbo_consumer_pool.erl
index 70e4538..d1a2af1 100644
--- a/src/dubbo_consumer_pool.erl
+++ b/src/dubbo_consumer_pool.erl
@@ -76,7 +76,7 @@
             ok
     catch
         _Type:Reason ->
-            lager:error("new ets table error ~p",[Reason]),
+            logger:error("new ets table error ~p",[Reason]),
             error
     end,
     try ets:new(?PROVIDER_NODE_LIST_TABLE, [bag,public,named_table,{keypos,2}]) of
@@ -84,7 +84,7 @@
             ok
     catch
         _Type1:Reason1 ->
-            lager:error("new ets table error ~p",[Reason1]),
+            logger:error("new ets table error ~p",[Reason1]),
             error
     end,
     ok.
@@ -202,7 +202,7 @@
             end,
             add_consumer(ProviderList,[HostFlag]++RegisterList);
         {error,R1} ->
-            lager:error("parse provider info error reason ~p",[R1]),
+            logger:error("parse provider info error reason ~p",[R1]),
             add_consumer(ProviderList,RegisterList)
     end.
 
@@ -213,7 +213,7 @@
         ConnectionFlagTerm= binary_to_atom(ConnectionFlag,utf8),
         AChild = {ConnectionFlagTerm,{dubbo_netty_client, start_link, [ConnectionFlagTerm,HostFlag,ProviderConfig,Item]}, permanent, 2000, worker, [dubbo_netty_client]},
         {ok,Pid} = dubbo_consumer_pool_sup:add_children(AChild),
-        lager:info("start provider ~p pid info ~p~n",[HostFlag,Pid]),
+        logger:info("start provider ~p pid info ~p~n",[HostFlag,Pid]),
         #connection_info{connection_id = ConnectionFlagTerm,pid = Pid,weight = Weight,host_flag = HostFlag}
         end,ExecutesList),
     ConnectionList.
@@ -224,11 +224,11 @@
 update_connection_info(Interface,HostFlag,ConnectionList,IsUpdateProvideNode)->
     lists:map(fun(Item) ->
         I1 = ets:insert(?INTERFCE_LIST_TABLE,#interface_list{interface = Interface,connection_info = Item}),
-        lager:debug("save INTERFCE_LIST_TABLE ~p info:~p",[Interface,I1]),
+        logger:debug("save INTERFCE_LIST_TABLE ~p info:~p",[Interface,I1]),
         case IsUpdateProvideNode of
             true->
                 I2 = ets:insert(?PROVIDER_NODE_LIST_TABLE,#provider_node_list{host_flag = HostFlag,connection_info = Item }),
-                lager:debug("save PROVIDER_NODE_LIST_TABLE ~p info:~p",[HostFlag,I2]);
+                logger:debug("save PROVIDER_NODE_LIST_TABLE ~p info:~p",[HostFlag,I2]);
             false->
                 ok
         end,
diff --git a/src/dubbo_invoker.erl b/src/dubbo_invoker.erl
index fa4821a..73601af 100644
--- a/src/dubbo_invoker.erl
+++ b/src/dubbo_invoker.erl
@@ -43,10 +43,10 @@
                     {error,request_full}
             end;
         {error,none}->
-            lager:error("[INVOKE] ~p error Reason no_provider",[Interface]),
+            logger:error("[INVOKE] ~p error Reason no_provider",[Interface]),
             {error,no_provider};
         {error,R1}->
-            lager:error("[INVOKE] ~p error Reason ~p",[Interface,R1]),
+            logger:error("[INVOKE] ~p error Reason ~p",[Interface,R1]),
             {error,R1}
     end.
 
diff --git a/src/dubbo_netty_client.erl b/src/dubbo_netty_client.erl
index d5ba464..7f7f0dc 100644
--- a/src/dubbo_netty_client.erl
+++ b/src/dubbo_netty_client.erl
@@ -70,7 +70,7 @@
     erlang:process_flag(min_bin_vheap_size, 1024*1024),
 %%    erlang:process_flag(min_heap_size, 1024*1024),
 %%    BindScheduler = (Index rem erlang:system_info(schedulers_online))+1,
-%%    lager:info("will bind to scheduler ~p",[BindScheduler]),
+%%    logger:info("will bind to scheduler ~p",[BindScheduler]),
 %%    erlang:process_flag(scheduler, BindScheduler),
 %%    erlang:process_flag(priority, high),
 
@@ -83,7 +83,7 @@
     end,
     NowStamp = time_util:timestamp_ms(),
     HeartBeatInfo = #heartbeat{last_read = NowStamp,last_write = NowStamp},
-    lager:info("netty client start ~p",[HostFlag]),
+    logger:info("netty client start ~p",[HostFlag]),
 %%    start_heartbeat_timer(HeartBeatInfo),
     {ok, State#state{provider_config=ProviderConfig,heartbeat=HeartBeatInfo,host_flag = HostFlag}}.
 
@@ -119,17 +119,17 @@
 
 handle_cast({send_request,Ref,Request,Data,SourcePid,RequestState}, State) ->
     RequestState2 = request_context:update(<<"t_net_b">>,RequestState),
-    lager:debug("[send_request begin] send data to provider consumer mid ~p pid ~p sourcePid ~p",[Request#dubbo_request.mid,self(),SourcePid]),
+    logger:debug("[send_request begin] send data to provider consumer mid ~p pid ~p sourcePid ~p",[Request#dubbo_request.mid,self(),SourcePid]),
     NewState = case send_msg(Data,State) of
         ok->
             save_request_info(Request,SourcePid,Ref,RequestState2),
-            lager:debug("[send_request end] send data to provider consumer pid ~p state ok",[self()]),
+            logger:debug("[send_request end] send data to provider consumer pid ~p state ok",[self()]),
             State;
         {error,closed}->
             State2 = reconnect(State),
             State2;
         {error,R1}->
-            lager:error("[send_request end] send data to provider consumer pid error ~p ~p",[self(),R1]),
+            logger:error("[send_request end] send data to provider consumer pid error ~p ~p",[self(),R1]),
             State
     end,
     HeartbeatInfo =update_heartbeat(write,NewState#state.heartbeat),
@@ -156,10 +156,10 @@
 
 handle_info({tcp,_Port,Data}, #state{recv_buffer = RecvBuffer} = State) ->
 %%    inet:setopts(State#state.socket, [{active, once}]),
-%%    lager:debug("[INFO] recv one data ~w",[Data]),
+%%    logger:debug("[INFO] recv one data ~w",[Data]),
     {ok,NextBuffer,NewState} = case check_recv_data(<< RecvBuffer/binary,Data/binary >>,State) of
                           {next_buffer,NextBuffer2,State3}->
-                              lager:debug("[INFO] recv one data state wait next_buffer"),
+                              logger:debug("[INFO] recv one data state wait next_buffer"),
                               {ok,NextBuffer2,State3}
                       end,
 %%    HeartbeatInfo =update_heartbeat(write,NewState#state.heartbeat),
@@ -184,7 +184,7 @@
     start_heartbeat_timer(HeartbeatInfo),
     {noreply,NewState#state{heartbeat = HeartbeatInfo}};
 handle_info(_Info,State) ->
-    lager:warning("[INFO] get one info:~p",[_Info]),
+    logger:warning("[INFO] get one info:~p",[_Info]),
 %%    inet:setopts(State#state.socket, [{active, once}]),
 %%    case State#state.tmp_pid of
 %%        undefined  ->ok;
@@ -208,7 +208,7 @@
 -spec(terminate(Reason :: (normal | shutdown | {shutdown, term()} | term()),
     State :: #state{}) -> term()).
 terminate(_Reason, _State) ->
-    lager:warning("terminate reason:~p",[_Reason]),
+    logger:warning("terminate reason:~p",[_Reason]),
     ok.
 
 %%--------------------------------------------------------------------
@@ -230,7 +230,7 @@
 %%%===================================================================
 
 open(Host,Port)->
-    lager:debug("will connect to provider ~p ~p",[Host,Port]),
+    logger:debug("will connect to provider ~p ~p",[Host,Port]),
     %
     case gen_tcp:connect(Host,Port,[
         binary,
@@ -250,7 +250,7 @@
             inet:setopts(Sockets, [{active, true}]),
             {ok,Sockets};
         Info ->
-            lager:error("start netty client ~p~n",[Info]),
+            logger:error("start netty client ~p~n",[Info]),
             {error,Info}
     end.
 
@@ -278,7 +278,7 @@
                 ok->
                     ok;
                 {error,Reason}->
-                    lager:error("send to server error,reason:~p",[Reason]),
+                    logger:error("send to server error,reason:~p",[Reason]),
                     {error,Reason}
             end
     end.
@@ -314,7 +314,7 @@
     {ok,Bin} = de_heartbeat:generate_request(Mid,NeedResponse),
     NewState = case send_msg(Bin,State) of
         ok ->
-            lager:info("send one heartbeat msg to server"),
+            logger:info("send one heartbeat msg to server"),
             State;
         {error,_Reason} ->
             State2 = reconnect(State),
@@ -335,17 +335,17 @@
             {ok,State2} = process_data(Data,State),
             {next_buffer,<<>>,State2};
         DataLen>RestSize ->
-            lager:warning("need wait next buffer data ~p",[Data]),
+            logger:warning("need wait next buffer data ~p",[Data]),
             {next_buffer,Data,State};
         DataLen<RestSize ->
             <<ReadyData:DataLen/binary,NextBuffer/binary>> = Rest,
             OneData = <<?DUBBO_MEGIC_HIGH:8,?DUBBO_MEGIC_LOW:8,_OtherFlag:80,DataLen:32,ReadyData/binary>>,
             {ok,State3} = process_data(OneData,State),
-%%            lager:warning("recevi more data ~w ",[NextBuffer]),
+%%            logger:warning("recevi more data ~w ",[NextBuffer]),
             check_recv_data(NextBuffer,State3)
     end;
 check_recv_data(<<Error/integer,Data/binary>>,State)->
-    lager:error("recv bad header data,Begin Byte:~p",[Error]),
+    logger:error("recv bad header data,Begin Byte:~p",[Error]),
     check_recv_data(Data,State);
 check_recv_data(<<>>,State)->
     {next_buffer,<<>>,State}.
@@ -360,7 +360,7 @@
             dubbo_traffic_control:decr_count(State#state.host_flag),
             case get_earse_request_info(ResponseInfo#dubbo_response.mid) of
                 undefined->
-                    lager:error("dubbo response can't find request data,response ~p",[ResponseInfo]);
+                    logger:error("dubbo response can't find request data,response ~p",[ResponseInfo]);
                 {SourcePid,Ref,RequestState} ->
 %%                    RequestState2 = request_context:update(<<"t_net_b">>,TmpTime,RequestState),
                     RequestState3 = request_context:update(<<"t_net_e">>,RequestState),
@@ -384,26 +384,26 @@
                     end
 %%                    gen_server:cast(SourcePid,{response_process,Ref,ResponseInfo,RestData,RequestState3})
 
-%%            lager:debug("will cast mid ~p to source process SourcePid ~p",[Response#dubbo_response.mid,SourcePid]),
+%%            logger:debug("will cast mid ~p to source process SourcePid ~p",[Response#dubbo_response.mid,SourcePid]),
 %%                    RpcContent=[],
 %%            ResponseData = de_type_transfer:response_to_native(Response),
-%%            lager:debug("one response ~p",[Response]),
+%%            logger:debug("one response ~p",[Response]),
 %%                    gen_server:cast(SourcePid,{msg_back,Ref,Response,RpcContent,RequestState3})
             end,
 
 
 
 %%            {ok,Res} = de_codec:decode_response(ResponseInfo,RestData),
-%%            lager:info("get one response mid ~p, is_event ~p state ~p",[Res#dubbo_response.mid,Res#dubbo_response.is_event,Res#dubbo_response.state]),
+%%            logger:info("get one response mid ~p, is_event ~p state ~p",[Res#dubbo_response.mid,Res#dubbo_response.is_event,Res#dubbo_response.state]),
 %%            {ok,State3} =process_response(Res#dubbo_response.is_event,Res,State,TmpTime),
             {ok,State};
         {ok,request,RequestInfo}->
             {ok,Req} = de_codec:decode_request(RequestInfo,RestData),
-            lager:info("get one request mid ~p, is_event ~p",[Req#dubbo_request.mid,Req#dubbo_request.is_event]),
+            logger:info("get one request mid ~p, is_event ~p",[Req#dubbo_request.mid,Req#dubbo_request.is_event]),
             {ok,State2} = process_request(Req#dubbo_request.is_event,Req,State),
             {ok,State2};
         {error,Type,RelData}->
-            lager:error("process_data error type ~p RelData ~p",[Type,RelData]),
+            logger:error("process_data error type ~p RelData ~p",[Type,RelData]),
             {ok,State}
     end.
 
@@ -414,14 +414,14 @@
     dubbo_traffic_control:decr_count(State#state.host_flag),
     case get_earse_request_info(Response#dubbo_response.mid) of
         undefined->
-            lager:error("dubbo response can't find request data,response ~p",[Response]);
+            logger:error("dubbo response can't find request data,response ~p",[Response]);
         {SourcePid,Ref,RequestState} ->
 %%            RequestState2 = request_context:update(<<"t_net_b">>,TmpTime,RequestState),
             RequestState3 = request_context:update(<<"t_net_e">>,RequestState),
-%%            lager:debug("will cast mid ~p to source process SourcePid ~p",[Response#dubbo_response.mid,SourcePid]),
+%%            logger:debug("will cast mid ~p to source process SourcePid ~p",[Response#dubbo_response.mid,SourcePid]),
             RpcContent=[],
 %%            ResponseData = de_type_transfer:response_to_native(Response),
-%%            lager:debug("one response ~p",[Response]),
+%%            logger:debug("one response ~p",[Response]),
             gen_server:cast(SourcePid,{msg_back,Ref,Response,RpcContent,RequestState3})
     end,
     {ok,State};
diff --git a/src/dubbo_node_config_util.erl b/src/dubbo_node_config_util.erl
index f0636e2..aea8377 100644
--- a/src/dubbo_node_config_util.erl
+++ b/src/dubbo_node_config_util.erl
@@ -26,10 +26,10 @@
             end,
             QueryListTmp = string:tokens(QueryStr,"&"),
             ProviderConfig = parse_parameter(QueryListTmp,#provider_config{protocol=Scheme,host=Host,port = Port}),
-            lager:debug("parse provider info string ~p,result: ~p",[ProviderStr,ProviderConfig]),
+            logger:debug("parse provider info string ~p,result: ~p",[ProviderStr,ProviderConfig]),
             {ok,ProviderConfig};
         {error,R1} ->
-            lager:debug("parse provider error string ~p, error ~p",[ProviderStr,R1]),
+            logger:debug("parse provider error string ~p, error ~p",[ProviderStr,R1]),
             {error,R1}
     end.
 %%    PrivoderInfo =list_to_binary(http_uri:decode(binary_to_list(PrivoderStr))),
@@ -51,7 +51,7 @@
             ConfigNew = parse_parameter(Key,Value,Config),
             parse_parameter(Rest,ConfigNew);
         KeyPair2 ->
-            lager:error("parse parameter error, keypair ~p",[KeyPair2]),
+            logger:error("parse parameter error, keypair ~p",[KeyPair2]),
             parse_parameter(Rest,Config)
     end.
 parse_parameter("anyhost",Value,Config)->
diff --git a/src/dubbo_provider_protocol.erl b/src/dubbo_provider_protocol.erl
index ad6074d..e3707eb 100644
--- a/src/dubbo_provider_protocol.erl
+++ b/src/dubbo_provider_protocol.erl
@@ -52,7 +52,7 @@
 %init([]) -> {ok, undefined}.
 
 init({Ref, Socket, Transport, _Opts = []}) ->
-    lager:info("provider connected"),
+    logger:info("provider connected"),
     ok = ranch:accept_ack(Ref),
     ok = Transport:setopts(Socket, [{active, once}]),
     gen_server:enter_loop(?MODULE, [],
@@ -67,7 +67,7 @@
                                    {next_buffer,<<>>,State2} ->
                                        {ok,<<>>,State2};
                                    {next_buffer,NextBuffer2,State3}->
-                                       lager:debug("[INFO] recv one data state wait next_buffer"),
+                                       logger:debug("[INFO] recv one data state wait next_buffer"),
                                        {ok,NextBuffer2,State3}
                                end,
 %%    HeartbeatInfo =update_heartbeat(write,NewState#state.heartbeat),
@@ -96,7 +96,7 @@
         ok ->
             ok;
         Other ->
-            lager:warning("response error ~p",[Other])
+            logger:warning("response error ~p",[Other])
     end,
     {noreply, State};
 handle_cast(_Msg, State) ->
@@ -137,17 +137,17 @@
             {ok,State2} = process_data(Data,State),
             {next_buffer,<<>>,State2};
         DataLen>RestSize ->
-            lager:warning("need wait next buffer data ~p",[Data]),
+            logger:warning("need wait next buffer data ~p",[Data]),
             {next_buffer,Data,State};
         DataLen<RestSize ->
             <<ReadyData:DataLen/binary,NextBuffer/binary>> = Rest,
             OneData = <<?DUBBO_MEGIC_HIGH:8,?DUBBO_MEGIC_LOW:8,_OtherFlag:80,DataLen:32,ReadyData/binary>>,
             {ok,State3} = process_data(OneData,State),
-            lager:warning("recevi more data ~w ",[NextBuffer]),
+            logger:warning("recevi more data ~w ",[NextBuffer]),
             check_recv_data(NextBuffer,State3)
     end;
 check_recv_data(<<Error/integer,Data/binary>>,State)->
-    lager:error("recv bad header data,Begin Byte:~p",[Error]),
+    logger:error("recv bad header data,Begin Byte:~p",[Error]),
     check_recv_data(Data,State);
 check_recv_data(<<>>,State)->
     {next_buffer,<<>>,State}.
@@ -158,16 +158,16 @@
     case de_codec:decode_header(Header) of
         {ok,request,RequestInfo}->
             {ok,Req} = de_codec:decode_request(RequestInfo,RestData),
-            lager:info("get one request mid ~p, is_event ~p",[Req#dubbo_request.mid,Req#dubbo_request.is_event]),
+            logger:info("get one request mid ~p, is_event ~p",[Req#dubbo_request.mid,Req#dubbo_request.is_event]),
             {ok,State2} = process_request(Req#dubbo_request.is_event,Req,State),
             {ok,State2};
         {ok,response,ResponseInfo}->
             {ok,Res} = de_codec:decode_response(ResponseInfo,RestData),
-            lager:info("get one response mid ~p, is_event ~p state ~p",[Res#dubbo_response.mid,Res#dubbo_response.is_event,Res#dubbo_response.state]),
+            logger:info("get one response mid ~p, is_event ~p state ~p",[Res#dubbo_response.mid,Res#dubbo_response.is_event,Res#dubbo_response.state]),
             {ok,State3} =process_response(Res#dubbo_response.is_event,Res,State),
             {ok,State3};
         {error,Type,RelData}->
-            lager:error("process_data error type ~p RelData ~p",[Type,RelData]),
+            logger:error("process_data error type ~p RelData ~p",[Type,RelData]),
             {ok,State}
     end.
 
@@ -181,9 +181,9 @@
 process_response(false,Response,State)->
 %%    case get_earse_request_info(Response#dubbo_response.mid) of
 %%        undefined->
-%%            lager:error("dubbo response can't find request data,response ~p",[Response]);
+%%            logger:error("dubbo response can't find request data,response ~p",[Response]);
 %%        {SourcePid,Ref,Request} ->
-%%            lager:debug("will cast mid ~p to source process SourcePid ~p",[Response#dubbo_response.mid,SourcePid]),
+%%            logger:debug("will cast mid ~p to source process SourcePid ~p",[Response#dubbo_response.mid,SourcePid]),
 %%            RpcContent=[],
 %%            ResponseData = de_type_transfer:response_to_native(Response),
 %%            gen_server:cast(SourcePid,{msg_back,Ref,ResponseData,RpcContent})
@@ -192,9 +192,9 @@
 
 process_request(true,Request,State)->
 %%    {ok,NewState} = send_heartbeat_msg(Request#dubbo_request.mid,State),
-    lager:info("process request event ~p",[Request]),
+    logger:info("process request event ~p",[Request]),
     {ok,State};
 process_request(false,Request,State)->
-    lager:info("process request ~p",[Request]),
+    logger:info("process request ~p",[Request]),
     dubbo_provider_worker:process_request(Request,self()),
     {ok,State}.
\ No newline at end of file
diff --git a/src/dubbo_serializa_fastjson.erl b/src/dubbo_serializa_fastjson.erl
index 819a118..8a34bc5 100644
--- a/src/dubbo_serializa_fastjson.erl
+++ b/src/dubbo_serializa_fastjson.erl
@@ -203,12 +203,12 @@
         ?RESPONSE_WITH_EXCEPTION ->
             [ExceptionValue | _] = DataList1,
             ExceptionObject = jiffy:decode(ExceptionValue),
-%%            lager:warning("decode unkonw type ~p ~p",[Type,Rest]),
+%%            logger:warning("decode unkonw type ~p ~p",[Type,Rest]),
 %%            {Rest2,Object2,DecodeState2} = hessianDecode2:decode(Rest,State),
-%%            lager:warning("decode unkonw type2 ~p ~p",[Object2,Rest2]),
+%%            logger:warning("decode unkonw type2 ~p ~p",[Object2,Rest2]),
             {ok,Res#dubbo_response{data = ExceptionObject}};
         Other ->
-            lager:error("server response unkonw info ~p",[Other]),
+            logger:error("server response unkonw info ~p",[Other]),
             {ok,Res#dubbo_response{data = <<"server pool exhausted">>}}
 
     end;
@@ -241,14 +241,14 @@
 %%        2 ->
 %%            {ok,Req#dubbo_request{data = null,decode_state = State}};
 %%        _->
-%%            lager:warning("decode unkonw type ~p ~p",[Type,Rest]),
+%%            logger:warning("decode unkonw type ~p ~p",[Type,Rest]),
 %%            {Rest2,Object2,DecodeState2} = hessianDecode2:decode(Rest,State),
-%%            lager:warning("decode unkonw type2 ~p ~p",[Object2,Rest2]),
+%%            logger:warning("decode unkonw type2 ~p ~p",[Object2,Rest2]),
 %%            {ok,Req#dubbo_request{data = Object2,decode_state = DecodeState2}}
 %%    end;
 decode_request(dubbo_event,Req,Data)->
 %%    DataList = binary:split(Data,<<"\n">>),
-    lager:debug("dubbo_event datalist ~w",[Data]),
+    logger:debug("dubbo_event datalist ~w",[Data]),
     Result = jiffy:decode(Data,[]),
 %%    {_Rest,undefined,_NewState} = hessianDecode2:decode(Data,hessianDecode2:init()),
     {ok,Req#dubbo_request{data = Result}}.
@@ -275,7 +275,7 @@
     AttachmentsList = dict:to_list(Attachments#map.dict),
     decode_request_body(List,Rest,State1,[AttachmentsList] ++ ResultList);
 decode_request_body([_Type1|List],Data,State,ResultList)->
-    lager:warning("decode_request_body unknow type"),
+    logger:warning("decode_request_body unknow type"),
     decode_request_body(List,Data,State, ResultList);
 decode_request_body([],Data,State,ResultList)->
     {ResultList,State,Data}.
diff --git a/src/dubbo_serializa_hession.erl b/src/dubbo_serializa_hession.erl
index 1e622fb..314573a 100644
--- a/src/dubbo_serializa_hession.erl
+++ b/src/dubbo_serializa_hession.erl
@@ -166,9 +166,9 @@
         2 ->
             {ok,Res#dubbo_response{data = null,decode_state = State}};
         _->
-            lager:warning("decode unkonw type ~p ~p",[Type,Rest]),
+            logger:warning("decode unkonw type ~p ~p",[Type,Rest]),
             {Rest2,Object2,DecodeState2} = hessianDecode2:decode(Rest,State),
-            lager:warning("decode unkonw type2 ~p ~p",[Object2,Rest2]),
+            logger:warning("decode unkonw type2 ~p ~p",[Object2,Rest2]),
             {ok,Res#dubbo_response{data = Object2,decode_state = DecodeState2}}
     end;
 decode_response(dubbo_event,Res,Data)->
@@ -200,9 +200,9 @@
 %%        2 ->
 %%            {ok,Req#dubbo_request{data = null,decode_state = State}};
 %%        _->
-%%            lager:warning("decode unkonw type ~p ~p",[Type,Rest]),
+%%            logger:warning("decode unkonw type ~p ~p",[Type,Rest]),
 %%            {Rest2,Object2,DecodeState2} = hessianDecode2:decode(Rest,State),
-%%            lager:warning("decode unkonw type2 ~p ~p",[Object2,Rest2]),
+%%            logger:warning("decode unkonw type2 ~p ~p",[Object2,Rest2]),
 %%            {ok,Req#dubbo_request{data = Object2,decode_state = DecodeState2}}
 %%    end;
 decode_request(dubbo_event,Req,Data)->
@@ -231,7 +231,7 @@
     AttachmentsList = dict:to_list(Attachments#map.dict),
     decode_request_body(List,Rest,State1,[AttachmentsList] ++ ResultList);
 decode_request_body([_Type1|List],Data,State,ResultList)->
-    lager:warning("decode_request_body unknow type"),
+    logger:warning("decode_request_body unknow type"),
     decode_request_body(List,Data,State, ResultList);
 decode_request_body([],Data,State,ResultList)->
     {ResultList,State,Data}.
diff --git a/src/dubbo_traffic_control.erl b/src/dubbo_traffic_control.erl
index d7b6fcb..fe8386b 100644
--- a/src/dubbo_traffic_control.erl
+++ b/src/dubbo_traffic_control.erl
@@ -31,7 +31,7 @@
             ets:update_counter(?TRAFFIC_CONTROL,Key,-1),
             full;
         _V ->
-%%            lager:debug("check traffic incr value ~p",[V]),
+%%            logger:debug("check traffic incr value ~p",[V]),
             ok
 
     catch
@@ -43,7 +43,7 @@
 decr_count(Key)->
     try ets:update_counter(?TRAFFIC_CONTROL,Key,-1) of
         _V ->
-%%            lager:debug("check traffic decr value ~p",[V]),
+%%            logger:debug("check traffic decr value ~p",[V]),
             ok
     catch
         _T:_R->
diff --git a/src/dubbo_zookeeper.erl b/src/dubbo_zookeeper.erl
index f0016a8..e6bfcb8 100644
--- a/src/dubbo_zookeeper.erl
+++ b/src/dubbo_zookeeper.erl
@@ -121,7 +121,7 @@
     {noreply, NewState :: #state{}, timeout() | hibernate} |
     {stop, Reason :: term(), NewState :: #state{}}).
 handle_info(_Info, State) ->
-    lager:info("zk server recv msg:~p",[_Info]),
+    logger:info("zk server recv msg:~p",[_Info]),
     {noreply, State}.
 
 %%--------------------------------------------------------------------
@@ -200,11 +200,11 @@
 get_provider_and_start(Pid,Interface,Path)->
     case erlzk:get_children(Pid,Path,spawn(dubbo_zookeeper,provider_watcher,[Interface])) of
         {ok,ChildList} ->
-            lager:debug("get provider list ~p",[ChildList]),
+            logger:debug("get provider list ~p",[ChildList]),
             start_provider_process(Interface,ChildList),
             ok;
         {error,R1} ->
-            lager:debug("[add_consumer] get_provider_list error ~p ~p",[R1]),
+            logger:debug("[add_consumer] get_provider_list error ~p ~p",[R1]),
             ok
     end.
 
@@ -212,11 +212,11 @@
     receive
         {node_children_changed,Path} ->
             gen_server:cast(?SERVER,{provider_node_change,Interface,Path}),
-            lager:debug("provider_watcher get event ~p ~p",[node_children_changed,Path]);
+            logger:debug("provider_watcher get event ~p ~p",[node_children_changed,Path]);
         {Event, Path} ->
 %%            Path = "/a",
 %%            Event = node_created
-            lager:debug("provider_watcher get event ~p ~p",[Event,Path])
+            logger:debug("provider_watcher get event ~p ~p",[Event,Path])
     end,
     ok.
 
@@ -224,10 +224,10 @@
 create_path(Pid,Path,CreateType)->
     case erlzk:create(Pid,Path,CreateType) of
         {ok,ActualPath}->
-            lager:debug("[add_consumer] create zk path  success ~p",[ActualPath]),
+            logger:debug("[add_consumer] create zk path  success ~p",[ActualPath]),
             ok;
         {error,R1}->
-            lager:debug("[add_consumer] create zk path error ~p ~p",[Path,R1])
+            logger:debug("[add_consumer] create zk path error ~p ~p",[Path,R1])
     end,
     ok.
 check_and_create_path(_Pid,_RootPath,[]) ->
@@ -238,11 +238,11 @@
         {ok,Stat} ->
             check_and_create_path(Pid,CheckPath,Rst);
         {error,no_node}->
-            lager:debug("[add_consumer] check_and_create_path unexist no_node ~p",[CheckPath]),
+            logger:debug("[add_consumer] check_and_create_path unexist no_node ~p",[CheckPath]),
             create_path(Pid,CheckPath,CreateType),
             check_and_create_path(Pid,CheckPath,Rst);
         {error,R1} ->
-            lager:debug("[add_consumer] check_and_create_path unexist ~p",[R1]),
+            logger:debug("[add_consumer] check_and_create_path unexist ~p",[R1]),
             check_and_create_path(Pid,CheckPath,Rst)
     end.
 
diff --git a/src/dubboerl.app.src b/src/dubboerl.app.src
index 4998bf0..37eb940 100644
--- a/src/dubboerl.app.src
+++ b/src/dubboerl.app.src
@@ -1,11 +1,11 @@
 {application, dubboerl,
  [{description, "An OTP application"},
-  {vsn, "0.1.0"},
+  {vsn, "0.3.0"},
   {registered, []},
   {mod, { dubboerl_app, []}},
   {applications,
    [kernel,
-    stdlib,xmerl,eunit,erlzk,lager,poolboy,inets
+    stdlib,xmerl,eunit,erlzk,logger,poolboy,inets
    ]},
   {env,[]},
   {modules, []},
diff --git a/src/dubboerl.erl b/src/dubboerl.erl
index 8d841bd..5f790df 100644
--- a/src/dubboerl.erl
+++ b/src/dubboerl.erl
@@ -25,7 +25,7 @@
     lists:map(fun({Interface,Option})->
         ConsumerInfo = dubbo_config_util:gen_consumer(ApplicationName,Interface,Option),
         dubbo_zookeeper:register_consumer(ConsumerInfo),
-        lager:info("register consumer success ~p",[Interface])
+        logger:info("register consumer success ~p",[Interface])
         end,ConsumerList),
     ok.
 
@@ -39,7 +39,7 @@
         MethodList= apply(BehaviourModuleName,get_method_999_list,[]),
         ProviderInfo = dubbo_config_util:gen_provider(ApplicationName,DubboServerPort,Interface,MethodList,Option),
         dubbo_zookeeper:register_provider(ProviderInfo),
-        lager:info("register provider success ~p ~p",[ImplModuleName,Interface])
+        logger:info("register provider success ~p ~p",[ImplModuleName,Interface])
         end,ProviderList),
     ok.
 
diff --git a/src/hessianDecode2.erl b/src/hessianDecode2.erl
index 93c8173..55c3a6a 100644
--- a/src/hessianDecode2.erl
+++ b/src/hessianDecode2.erl
@@ -176,7 +176,7 @@
             end
     end;
 decode(<<H:4,Ref:4,Rest/binary>>, _State) when H == 6 ->
-    lager:debug("decode data find ref ~p",[Ref]),
+    logger:debug("decode data find ref ~p",[Ref]),
     case hash_lookup(Ref, _State) of
         {not_found, Ref} ->
             {Rest, {not_found, Ref}, _State};
@@ -284,7 +284,7 @@
     end.
 
 build_foreign_view(ForeignType,FieldNames,State) ->
-    lager:debug("[DECODE] build_foreign_view ForeignType ~p FieldNames ~p",[ForeignType,FieldNames]),
+    logger:debug("[DECODE] build_foreign_view ForeignType ~p FieldNames ~p",[ForeignType,FieldNames]),
     ForeignView = FieldNames,
     #decoding_state{type_pool = OldPool} = State,
     Native = dict:size(OldPool),
@@ -310,7 +310,7 @@
     NativeData.
 
 visit(TypeDef, State = #decoding_state{reference_pool = OldPool}) ->
-    lager:debug("[DECODE] visit typedef ~p",[TypeDef]),
+    logger:debug("[DECODE] visit typedef ~p",[TypeDef]),
     Size = dict:size(OldPool),
     NewPool = dict:store(Size, TypeDef, OldPool),
     {Size,State#decoding_state{reference_pool = NewPool}}.
@@ -333,7 +333,7 @@
 hash_store(TypeDef = #type_def{defineNo = Hash}, #decoding_state{hash_pool = HashPool} = State) ->
 %%    init(false),
 %%    ets:insert(hashes,{Hash,TypeDef}),
-    lager:debug("[DECODE] hash store typedef ~p",[TypeDef]),
+    logger:debug("[DECODE] hash store typedef ~p",[TypeDef]),
     NewPool = dict:store(Hash,TypeDef,HashPool),
     State#decoding_state{hash_pool = NewPool}.
 
diff --git a/src/hessianEncode.erl b/src/hessianEncode.erl
index 0b29a9e..ecfe3c4 100755
--- a/src/hessianEncode.erl
+++ b/src/hessianEncode.erl
@@ -40,7 +40,7 @@
 			IndexBin = encode(int, Index, State),
 			<<$Q, IndexBin/binary>>;
 		_Object ->
-            lager:debug("[encode] object ~p",[Input]),
+            logger:debug("[encode] object ~p",[Input]),
 			encode(class_object, Input, State);
 %%			{<<>>,State};
 		{K, V} ->
@@ -339,7 +339,7 @@
 encode(object, BaseBin, TypeNo, Values, State) ->
 	IndexBin = if
 		TypeNo < 16 ->
-			lager:debug("[encode] encode object TypeNo ~p",[TypeNo]),
+			logger:debug("[encode] encode object TypeNo ~p",[TypeNo]),
 			IndexWrap = TypeNo + 16#60,
 			<<IndexWrap:8>>;
 		true ->
@@ -376,7 +376,7 @@
 camelize(Element,Acc) -> lists:append(Acc,[Element]).
 
 encode_accumulate(Value, {Acc, State}) ->
-    lager:debug("[encode] encode_accumulate value ~p",[Value]),
+    logger:debug("[encode] encode_accumulate value ~p",[Value]),
 	case encode(Value, State) of 
 		{Encoded,NewState} -> {<<Acc/binary,Encoded/binary>>,NewState};
 		Encoded -> {<<Acc/binary,Encoded/binary>>,State}
diff --git a/src/request_context.erl b/src/request_context.erl
index ea9da32..5ddbae7 100644
--- a/src/request_context.erl
+++ b/src/request_context.erl
@@ -114,4 +114,4 @@
     ok.
 
 test()->
-    lager:error("a~-10.5sb",[123]).
\ No newline at end of file
+    logger:error("a~-10.5sb",[123]).
\ No newline at end of file
diff --git a/src/type_encoding.erl b/src/type_encoding.erl
index 6105ab3..f457fb0 100644
--- a/src/type_encoding.erl
+++ b/src/type_encoding.erl
@@ -53,7 +53,7 @@
 %%
 %% If it already has been written out, it must be back-referenced.
 visit(NativeType, State = #encoding_state{pool = Pool}) ->
-    lager:debug("[encode] visit ~p",[NativeType]),
+    logger:debug("[encode] visit ~p",[NativeType]),
     case dict:find(NativeType,Pool) of
         {ok,{-1, TypeDef}} ->
             %% The type needs hashing and it's reference needs updating
@@ -84,7 +84,7 @@
     NewTypeDef = TypeDef#type_def{defineNo = NewCount},
     Value = {NewCount, NewTypeDef},
     NewPool = dict:store(Key, Value, OldPool),
-    lager:debug("[encode] assign_reference type ~p definedNo ~p",[Key,NewCount]),
+    logger:debug("[encode] assign_reference type ~p definedNo ~p",[Key,NewCount]),
     {NewCount,NewTypeDef,#encoding_state{pool = NewPool, count = NewCount}}.
 
 get_deftype_public_pool(NativeType)->
diff --git a/src/type_register.erl b/src/type_register.erl
index 6912cf2..2e22831 100644
--- a/src/type_register.erl
+++ b/src/type_register.erl
@@ -35,7 +35,7 @@
 
 
 regiest_foreign_native(TypeDef)->
-    lager:debug("regiest foreign info ~p",[TypeDef]),
+    logger:debug("regiest foreign info ~p",[TypeDef]),
     ets:insert(?FOREIGN_NATIVE_TABLE,{TypeDef#type_def.foreign_type,TypeDef}),
     ets:insert(?NATIVE_FOREIGN_TABLE,{TypeDef#type_def.native_type,TypeDef}).
 
