diff --git a/common/constant/default.go b/common/constant/default.go
index bbe022c..8afb5c7 100644
--- a/common/constant/default.go
+++ b/common/constant/default.go
@@ -87,3 +87,10 @@
 const (
 	SERVICE_DISCOVERY_DEFAULT_GROUP = "DEFAULT_GROUP"
 )
+
+const (
+	DEFAULT_PROVIDER_CONF_FILE_PATH = "../profiles/dev/server.yml"
+	DEFAULT_CONSUMER_CONF_FILE_PATH = "../profiles/dev/client.yml"
+	DEFAULT_LOG_CONF_FILE_PATH      = "../profiles/dev/log.yml"
+	DEFAULT_ROUTER_CONF_FILE_PATH   = "../profiles/dev/router.yml"
+)
diff --git a/common/logger/logger.go b/common/logger/logger.go
index 8519543..655b364 100644
--- a/common/logger/logger.go
+++ b/common/logger/logger.go
@@ -72,6 +72,9 @@
 	for len(fs.Args()) != 0 {
 		fs.Parse(fs.Args()[1:])
 	}
+	if *logConfFile == "" {
+		*logConfFile = constant.DEFAULT_LOG_CONF_FILE_PATH
+	}
 	err := InitLog(*logConfFile)
 	if err != nil {
 		log.Printf("[InitLog] warn: %v", err)
diff --git a/config/config_loader.go b/config/config_loader.go
index 1fd27d5..5834414 100644
--- a/config/config_loader.go
+++ b/config/config_loader.go
@@ -74,11 +74,25 @@
 	for len(fs.Args()) != 0 {
 		fs.Parse(fs.Args()[1:])
 	}
+	// If user did not set the environment variables or flags,
+	// we provide default value
+	if confConFile == "" {
+		confConFile = constant.DEFAULT_CONSUMER_CONF_FILE_PATH
+	}
+	if confProFile == "" {
+		confProFile = constant.DEFAULT_PROVIDER_CONF_FILE_PATH
+	}
+	if confRouterFile == "" {
+		confRouterFile = constant.DEFAULT_ROUTER_CONF_FILE_PATH
+	}
 
 	if errCon := ConsumerInit(confConFile); errCon != nil {
 		log.Printf("[consumerInit] %#v", errCon)
 		consumerConfig = nil
 	} else {
+		// Check if there are some important key fields missing,
+		// if so, we set a default value for it
+		setDefaultValue(consumerConfig)
 		// Even though baseConfig has been initialized, we override it
 		// because we think read from config file is correct config
 		baseConfig = &consumerConfig.BaseConfig
@@ -88,12 +102,48 @@
 		log.Printf("[providerInit] %#v", errPro)
 		providerConfig = nil
 	} else {
+		// Check if there are some important key fields missing,
+		// if so, we set a default value for it
+		setDefaultValue(providerConfig)
 		// Even though baseConfig has been initialized, we override it
 		// because we think read from config file is correct config
 		baseConfig = &providerConfig.BaseConfig
 	}
 }
 
+// setDefaultValue set default value for providerConfig or consumerConfig if it is null
+func setDefaultValue(target interface{}) {
+	registryConfig := &RegistryConfig{
+		Protocol:   "zookeeper",
+		TimeoutStr: "3s",
+		Address:    "127.0.0.1:2181",
+	}
+	switch target.(type) {
+	case ProviderConfig:
+		p := target.(*ProviderConfig)
+		if len(p.Registries) == 0 {
+			p.Registries["demoZK"] = registryConfig
+		}
+		if len(p.Protocols) == 0 {
+			p.Protocols["dubbo"] = &ProtocolConfig{
+				Name: "dubbo",
+				Port: "20000",
+			}
+		}
+		if p.ApplicationConfig == nil {
+			p.ApplicationConfig = NewDefaultApplicationConfig()
+		}
+	default:
+		c := target.(*ConsumerConfig)
+		if len(c.Registries) == 0 {
+			c.Registries["demoZK"] = registryConfig
+		}
+		if c.ApplicationConfig == nil {
+			c.ApplicationConfig = NewDefaultApplicationConfig()
+		}
+	}
+}
+
 func checkRegistries(registries map[string]*RegistryConfig, singleRegistry *RegistryConfig) {
 	if len(registries) == 0 && singleRegistry != nil {
 		registries[constant.DEFAULT_KEY] = singleRegistry
