Merge pull request #1 from dubboerl/0.3.0

replace lager to logger lib
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}).