From b0156ce788e72fc1141b884515d2c6f67d3f94cc Mon Sep 17 00:00:00 2001 From: boyce Date: Tue, 26 Mar 2019 14:39:26 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=B9=E6=97=A5=E5=BF=97=E7=9B=91=E5=90=AC?= =?UTF-8?q?=E5=99=A8=E6=96=B0=E5=A2=9E=E6=96=87=E4=BB=B6=E5=90=8D=E5=92=8C?= =?UTF-8?q?=E8=A1=8C=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cluster/cluster.go | 2 +- service/Module.go | 3 ++- service/servicemanager.go | 11 ++++++++++- sysmodule/LogModule.go | 16 ++++++++++++++++ 4 files changed, 29 insertions(+), 3 deletions(-) diff --git a/cluster/cluster.go b/cluster/cluster.go index 5bb86c1..7e82315 100644 --- a/cluster/cluster.go +++ b/cluster/cluster.go @@ -310,7 +310,7 @@ func (slf *CCluster) Go(bCast bool, NodeServiceMethod string, args interface{}) if nodeid == GetNodeId() { iService := service.InstanceServiceMgr().FindService(serviceName) if iService.IsInit() == false { - service.GetLogger().Printf(sysmodule.LEVER_ERROR, "CCluster.Call(%s): NodeId %d is not init.", NodeServiceMethod, nodeid) + service.GetLogger().Printf(sysmodule.LEVER_WARN, "CCluster.Call(%s): NodeId %d is not init.", NodeServiceMethod, nodeid) return fmt.Errorf("CCluster.Call(%s): NodeId %d is not init.", NodeServiceMethod, nodeid) } diff --git a/service/Module.go b/service/Module.go index 11cefe4..af98f36 100644 --- a/service/Module.go +++ b/service/Module.go @@ -295,7 +295,7 @@ func (slf *BaseModule) RunModule(module IModule) { slf.recoverCount += 1 //重试3次 - if slf.recoverCount < 4 { + if slf.recoverCount < 10 { go slf.RunModule(slf.GetSelf()) } else { GetLogger().Printf(LEVER_FATAL, "Routine %T.OnRun has exited!", module) @@ -333,6 +333,7 @@ func (slf *BaseModule) RunModule(module IModule) { GetLogger().Printf(LEVER_INFO, "OnEndRun module %T...", module) return } + } } diff --git a/service/servicemanager.go b/service/servicemanager.go index 1782d26..565e63d 100644 --- a/service/servicemanager.go +++ b/service/servicemanager.go @@ -60,7 +60,6 @@ func (slf *CServiceManager) Init(logger ILogger, exit chan bool, pwaitGroup *syn func (slf *CServiceManager) Start() bool { for _, sname := range slf.orderLocalService { s := slf.FindService(sname) - GetLogger().Printf(LEVER_INFO, "Start Init module %T.", s.(IModule)) err := s.(IModule).OnInit() if err != nil { @@ -103,3 +102,13 @@ func InstanceServiceMgr() *CServiceManager { func GetLogger() ILogger { return InstanceServiceMgr().GetLogger() } + +func (slf *CServiceManager) IsFinishInit() bool { + for _, val := range slf.localserviceMap { + if val.IsInit() == false { + return false + } + } + + return true +} diff --git a/sysmodule/LogModule.go b/sysmodule/LogModule.go index fc74c3e..ddb51ec 100644 --- a/sysmodule/LogModule.go +++ b/sysmodule/LogModule.go @@ -4,6 +4,8 @@ import ( "fmt" "log" "os" + "runtime" + "strings" "sync" "time" @@ -108,6 +110,20 @@ func (slf *LogModule) Printf(level uint, format string, v ...interface{}) { } if slf.listenFun != nil { + var file string + var line int + var ok bool + _, file, line, ok = runtime.Caller(1) + if !ok { + file = "???" + line = 0 + } + parts := strings.Split(file, "/") + if len(parts) > 0 { + file = parts[len(parts)-1] + } + + format = LogPrefix[level] + time.Now().Format("2006/1/2 15:04:05") + fmt.Sprintf(" %s:%d:", file, line) + format slf.listenFun(level, fmt.Sprintf(format, v...)) } }