diff --git a/dubbo_client/__init__.py b/dubbo_client/__init__.py
index 3d7d41e..bcb77cd 100644
--- a/dubbo_client/__init__.py
+++ b/dubbo_client/__init__.py
@@ -12,4 +12,4 @@
 )
 from config import (
     ApplicationConfig,
-)
\ No newline at end of file
+)
diff --git a/dubbo_client/common.py b/dubbo_client/common.py
index 3633ac8..bc03749 100644
--- a/dubbo_client/common.py
+++ b/dubbo_client/common.py
@@ -1,4 +1,4 @@
-#encoding=utf-8
+# encoding=utf-8
 from urlparse import urlparse, parse_qsl
 
 __author__ = 'caozupeng'
@@ -28,4 +28,4 @@
             if pos > -1:
                 key = key[pos + 1:]
             # print key
-            self.__dict__[key] = value
\ No newline at end of file
+            self.__dict__[key] = value
diff --git a/dubbo_client/config.py b/dubbo_client/config.py
index c19e40b..c14f7a4 100644
--- a/dubbo_client/config.py
+++ b/dubbo_client/config.py
@@ -7,13 +7,13 @@
     name = 'default'
     # 模块版本
     version = '1.0.0'
-    #应用负责人
+    # 应用负责人
     owner = ''
-    #组织名(BU或部门)
+    # 组织名(BU或部门)
     organization = ''
-    #分层
+    # 分层
     architecture = 'web'
-    #环境，如：dev/test/run
+    # 环境，如：dev/test/run
     environment = 'run'
 
     def __init__(self, name, **kwargs):
@@ -35,4 +35,4 @@
 
 if __name__ == '__main__':
     application_config = ApplicationConfig('test_app', version='2.0.0', owner='caozupeng', error='ssd')
-    print application_config
\ No newline at end of file
+    print application_config
diff --git a/dubbo_client/registry.py b/dubbo_client/registry.py
index efa7455..062908b 100644
--- a/dubbo_client/registry.py
+++ b/dubbo_client/registry.py
@@ -1,21 +1,30 @@
 # coding=utf-8
 import time
-
-__author__ = 'caozupeng'
 import os
 import socket
 import struct
 from threading import Thread
-
-from dubbo_client.config import ApplicationConfig
-
 import urllib
+import logging
+import logging.config
+import os.path
 
 from kazoo.protocol.states import KazooState
+
 from kazoo.client import KazooClient
 
+from dubbo_client.config import ApplicationConfig
 from dubbo_client.common import ServiceURL
 
+__author__ = 'caozupeng'
+
+# 创建一个logger
+if os.path.exists('logging.conf'):
+    logging.config.fileConfig('logging.conf')
+else:
+    logging.basicConfig()
+logger = logging.getLogger('dubbo')
+
 
 class Registry(object):
     """
@@ -36,6 +45,14 @@
         """
         pass
 
+    def _do_config_event(self, event):
+        """
+        protect方法，处理管理台的禁用，倍权，半权等操作
+        :param event:
+        :return:
+        """
+        pass
+
     def register(self, interface, **kwargs):
         """
         客户端注册到注册中心，亮出自己的身份
@@ -75,6 +92,14 @@
         """
         self._do_event(event)
 
+    def configuration_listener(self, event):
+        """
+        监听
+        :param event:
+        :return:
+        """
+        self._do_config_event(event)
+
     def _to_key(self, interface, versioin, group):
         """
         计算存放在内存中的服务的key，以接口、版本、分组计算
@@ -124,6 +149,7 @@
             del self._service_provides[interface]
         for child_node in nodes:
             node = urllib.unquote(child_node).decode('utf8')
+            logger.debug('child of node is {0}'.format(node))
             if node.startswith('jsonrpc'):
                 service_url = ServiceURL(node)
                 self._add_node(interface, service_url)
@@ -161,6 +187,7 @@
         # 如果要删除，必须先把/dubbo/和最后的/providers去掉
         # 将zookeeper中查询到的服务节点列表加入到一个dict中
         # zookeeper中保持的节点url类似如下
+        logger.debug("receive event is {0}, event state is {1}".format(event, event.state))
         provide_name = event.path[7:event.path.rfind('/')]
         if event.state == 'CONNECTED':
             children = self.__zk.get_children(event.path, watch=self.event_listener)
@@ -169,6 +196,9 @@
             children = self.__zk.get_children(event.path, watch=self.event_listener)
             self._compare_swap_nodes(provide_name, self.__unquote(children))
 
+    def _do_config_event(self, event):
+        print event
+
     def register(self, interface, **kwargs):
         ip = self.__zk._connection._socket.getsockname()[0]
         params = {
@@ -199,10 +229,13 @@
         """
         version = kwargs.get('version', '')
         group = kwargs.get('group', '')
-        children = self.__zk.get_children('{0}/{1}/{2}'.format('dubbo', interface, 'providers'),
-                                          watch=self.event_listener)
+        providers_children = self.__zk.get_children('{0}/{1}/{2}'.format('dubbo', interface, 'providers'),
+                                                    watch=self.event_listener)
+        logger.debug("watch node is {0}".format(providers_children))
+        configurators_children = self.__zk.get_children('{0}/{1}/{2}'.format('dubbo', interface, 'configurators'),
+                                                        watch=self.configuration_listener)
         # 全部重新添加
-        self._compare_swap_nodes(interface, self.__unquote(children))
+        self._compare_swap_nodes(interface, self.__unquote(providers_children))
 
 
 class MulticastRegistry(Registry):
@@ -227,7 +260,6 @@
         def set_mssage(self, msg):
             self.sock.sendto(msg, (self.multicast_group, int(self.multicast_port)))
 
-
     def __init__(self, address, application_config=None):
         if application_config:
             self._app_config = application_config
@@ -249,13 +281,27 @@
 
 
 if __name__ == '__main__':
-    # zk = KazooClient(hosts='192.168.59.103:2181')
-    # zk.start()
-    # parent_node = '{0}/{1}/{2}'.format('dubbo', 'com.ofpay.demo.api.UserProvider', '')
-    # nodes = zk.get_children(parent_node)
-    # for child_node in nodes:
-    #     node = urllib.unquote(child_node).decode('utf8')
-    #     print node
-        # zk.delete(parent_node+'/'+child_node, recursive=True)
-    registry = MulticastRegistry('224.5.6.7:1234')
-    time.sleep(50)
\ No newline at end of file
+    zk = KazooClient(hosts='192.168.59.103:2181')
+    zk.start()
+    parent_node = '{0}/{1}/{2}'.format('dubbo', 'com.ofpay.demo.api.UserProvider', '')
+    nodes = zk.get_children(parent_node)
+    for child_node in nodes:
+        node = urllib.unquote(child_node).decode('utf8')
+        print node
+    configurators_node = '{0}/{1}/{2}'.format('dubbo', 'com.ofpay.demo.api.UserProvider', 'configurators')
+    nodes = zk.get_children(configurators_node)
+    for child_node in nodes:
+        node = urllib.unquote(child_node).decode('utf8')
+        print node
+    providers_node = '{0}/{1}/{2}'.format('dubbo', 'com.ofpay.demo.api.UserProvider', 'providers')
+    nodes = zk.get_children(providers_node)
+    for child_node in nodes:
+        node = urllib.unquote(child_node).decode('utf8')
+        print node
+    # zk.delete(parent_node+'/'+child_node, recursive=True)
+    # registry = MulticastRegistry('224.5.6.7:1234')
+    registry = ZookeeperRegistry('zookeeper:2181')
+    registry.subscribe('com.ofpay.demo.api.UserProvider')
+    print registry.get_provides('com.ofpay.demo.api.UserProvider')
+
+    time.sleep(500)
diff --git a/setup.py b/setup.py
index f3d2321..1660372 100644
--- a/setup.py
+++ b/setup.py
@@ -8,6 +8,7 @@
 """
 
 import os
+
 from setuptools import setup, find_packages
 
 THISDIR = os.path.dirname(os.path.abspath(__file__))
@@ -18,25 +19,24 @@
 DOWNLOAD_BASEURL = "https://github.com/ofpay/dubbo-client-py/raw/master/dist/"
 DOWNLOAD_URL = DOWNLOAD_BASEURL + "dubbo-client-%s-py2.7.egg" % VERSION
 
-
 setup(
-    name = "dubbo-client",
-    version = VERSION,
-    description = (
+    name="dubbo-client",
+    version=VERSION,
+    description=(
         "Python Dubbo Client"
     ),
-    long_description = open("README.md").read(),
-    keywords = (
+    long_description=open("README.md").read(),
+    keywords=(
         "Dubbo, JSON-RPC, JSON, RPC, Client,"
         "HTTP-Client, Remote Procedure Call, JavaScript Object Notation, "
     ),
-    author = "Joe Cao",
-    author_email = "chinalibra@gmail.com",
-    url = HOMEPAGE,
-    download_url = DOWNLOAD_URL,
-    packages = find_packages(),
-    classifiers = [
-        #"Development Status :: 1 - Planning",
+    author="Joe Cao",
+    author_email="chinalibra@gmail.com",
+    url=HOMEPAGE,
+    download_url=DOWNLOAD_URL,
+    packages=find_packages(),
+    classifiers=[
+        # "Development Status :: 1 - Planning",
         # "Development Status :: 2 - Pre-Alpha",
         # "Development Status :: 3 - Alpha",
         "Development Status :: 4 - Beta",
@@ -53,5 +53,5 @@
         "Topic :: Internet :: WWW/HTTP :: HTTP Servers",
         "Topic :: Internet :: WWW/HTTP :: WSGI :: Application",
     ],
-    install_requires = ["kazoo>=2.0", "python-jsonrpc>=0.7.3"],
-)
\ No newline at end of file
+    install_requires=["kazoo>=2.0", "python-jsonrpc>=0.7.3"],
+)
diff --git a/tests/logging.conf b/tests/logging.conf
new file mode 100644
index 0000000..aeb83f8
--- /dev/null
+++ b/tests/logging.conf
@@ -0,0 +1,49 @@
+[loggers]
+keys=root, dubbo
+
+[handlers]
+keys=null,console,file
+
+[formatters]
+keys=verbose,simple,default
+
+[formatter_verbose]
+format=%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s
+datefmt=
+class=logging.Formatter
+
+[formatter_simple]
+format=%(levelname)s %(message)s
+datefmt=%Y-%m-%d %H:%M:%S
+class=logging.Formatter
+
+[formatter_default]
+format=%(asctime)s %(message)s
+datefmt=%Y-%m-%d %H:%M:%S
+class=logging.Formatter
+
+[logger_root]
+level=NOTSET
+handlers=
+
+[logger_dubbo]
+level=DEBUG
+handlers=console,file
+propagate=1
+qualname=
+
+[handler_null]
+class=NullHandler
+level=DEBUG
+args=()
+
+[handler_console]
+class=StreamHandler
+level=DEBUG
+args=()
+
+[handler_file]
+class=handlers.TimedRotatingFileHandler
+level=DEBUG
+formatter=default
+args=('dubbo.log','D',1,0,'utf8')
\ No newline at end of file
diff --git a/tests/test_kstore_platform.py b/tests/test_kstore_platform.py
new file mode 100644
index 0000000..1f3d50a
--- /dev/null
+++ b/tests/test_kstore_platform.py
@@ -0,0 +1,23 @@
+# coding=utf-8
+import time
+
+from dubbo_client import ZookeeperRegistry, DubboClient, DubboClientError, ApplicationConfig
+
+__author__ = 'caozupeng'
+
+if __name__ == '__main__':
+    config = ApplicationConfig('test_rpclib')
+    service_interface = 'com.qianmi.kstore.provider.CustomerAddressProvider'
+    # 该对象较重，有zookeeper的连接，需要保存使用
+    registry = ZookeeperRegistry('zookeeper:2181', config)
+    # registry = MulticastRegistry('224.5.6.7:1234', config)
+    user_provider = DubboClient(service_interface, registry, version='1.0')
+    for i in range(1000):
+        try:
+            print user_provider.findAddressByCustomerId(1)
+            # print user_provider.save(1, 3)
+
+        except DubboClientError, client_error:
+            print client_error.message
+            print client_error.data
+        time.sleep(5)
diff --git a/tests/test_performance.py b/tests/test_performance.py
index 1a0b203..a61ebf1 100644
--- a/tests/test_performance.py
+++ b/tests/test_performance.py
@@ -1,16 +1,15 @@
 # coding=utf-8
-import profile
 import pstats
-import timeit
 
 from pyjsonrpc import HttpClient
-from dubbo_client import ZookeeperRegistry, DubboClient
 
+from dubbo_client import ZookeeperRegistry, DubboClient
 
 __author__ = 'caozupeng'
 
 number = 1000
 
+
 def test_client_every_new():
     for x in range(number):
         user_provider = HttpClient(url="http://{0}{1}".format('172.19.3.111:38080/', 'com.ofpay.demo.api.UserProvider'))
@@ -46,6 +45,7 @@
         user_provider.isLimit('MAN', 'Joe')
         user_provider('getUser', 'A005')
 
+
 if __name__ == '__main__':
     """
     在我的mac 4c8g笔记本上，同时启动服务端和客户端（忽略网络开销）
@@ -76,4 +76,4 @@
     np.sort_stats('time').print_stats()
     # profile.run('test_client()', 'test_client.txt')
     cp = pstats.Stats('test_client.txt')
-    cp.sort_stats('time').print_stats()
\ No newline at end of file
+    cp.sort_stats('time').print_stats()
diff --git a/tests/test_rawclient.py b/tests/test_rawclient.py
index 179644b..18533e0 100644
--- a/tests/test_rawclient.py
+++ b/tests/test_rawclient.py
@@ -2,8 +2,9 @@
 
 __author__ = 'caozupeng'
 
+
 def test_client_every_new():
-    user_provider = HttpClient(url="http://{0}{1}".format('172.19.3.111:38081/', 'com.ofpay.demo.api.UserProvider2'))
+    user_provider = HttpClient(url="http://{0}{1}".format('zookeeper:38081/', 'com.ofpay.demo.api.UserProvider2'))
     print user_provider.getUser('A003')
     print user_provider.queryUser(
         {u'age': 18, u'time': 1428463514153, u'sex': u'MAN', u'id': u'A003', u'name': u'zhangsan'})
@@ -13,4 +14,4 @@
 
 
 if __name__ == '__main__':
-    test_client_every_new()
\ No newline at end of file
+    test_client_every_new()
diff --git a/tests/test_registry.py b/tests/test_registry.py
index d83e5a3..9a7ef75 100644
--- a/tests/test_registry.py
+++ b/tests/test_registry.py
@@ -33,4 +33,4 @@
 
 
 if __name__ == '__main__':
-    multicat()
\ No newline at end of file
+    multicat()
diff --git a/tests/test_rpclib.py b/tests/test_rpclib.py
index 2d5e146..611c644 100644
--- a/tests/test_rpclib.py
+++ b/tests/test_rpclib.py
@@ -1,31 +1,31 @@
 # coding=utf-8
 import time
 
-from dubbo_client import ZookeeperRegistry, DubboClient, DubboClientError, ApplicationConfig, MulticastRegistry
-
+from dubbo_client import ZookeeperRegistry, DubboClient, DubboClientError, ApplicationConfig
 
 __author__ = 'caozupeng'
 
-
 if __name__ == '__main__':
     config = ApplicationConfig('test_rpclib')
     service_interface = 'com.ofpay.demo.api.UserProvider'
     # 该对象较重，有zookeeper的连接，需要保存使用
-    registry = ZookeeperRegistry('192.168.59.103:2181', config)
+    registry = ZookeeperRegistry('115.28.74.185:2181', config)
     # registry = MulticastRegistry('224.5.6.7:1234', config)
     user_provider = DubboClient(service_interface, registry, version='2.0')
     for i in range(1000):
         try:
             print user_provider.getUser('A003')
-            print user_provider.getUser(123)
-            print user_provider.queryUser(
-                {u'age': 18, u'time': 1428463514153, u'sex': u'MAN', u'id': u'A003', u'name': u'zhangsan'})
-            datas = user_provider.queryAll()
-            for key, user in datas.items():
-                print user['name']
-            print user_provider.isLimit('MAN', 'Joe')
-            print user_provider('getUser', 'A005')
-
+            # print user_provider.getUser(123)
+            # print user_provider.queryUser(
+            #     {u'age': 18, u'time': 1428463514153, u'sex': u'MAN', u'id': u'A003', u'name': u'zhangsan'})
+            # datas = user_provider.queryAll()
+            # for key, user in datas.items():
+            #     print user['name']
+            # print user_provider.isLimit('MAN', 'Joe')
+            # print user_provider('getUser', 'A005')
+            # print user_provider.notFunc()
+            # print user_provider.gotException()
         except DubboClientError, client_error:
-            print client_error
+            print client_error.message
+            print client_error.data
         time.sleep(5)
