From e484d0a18b0bc0a552bf1747511f6b751f91c4b4 Mon Sep 17 00:00:00 2001 From: boyce Date: Wed, 13 Feb 2019 11:12:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=B3=BB=E7=BB=9F=E6=97=A5?= =?UTF-8?q?=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- originnode/node.go | 4 ++-- service/Logger.go | 16 ++++++++++++++++ service/Service.go | 4 +++- service/servicemanager.go | 14 ++++++++++++-- 4 files changed, 33 insertions(+), 5 deletions(-) create mode 100644 service/Logger.go diff --git a/originnode/node.go b/originnode/node.go index 3d4f533..a408156 100644 --- a/originnode/node.go +++ b/originnode/node.go @@ -29,11 +29,11 @@ type COriginNode struct { } func (s *COriginNode) Init() { - //初始化全局模块 InitGlobalModule() service.InitLog() - service.InstanceServiceMgr().Init() + imodule := g_module.GetModuleByType(sysmodule.SYS_LOG) + service.InstanceServiceMgr().Init(imodule.(service.ILogger)) s.exit = make(chan bool) s.waitGroup = &sync.WaitGroup{} diff --git a/service/Logger.go b/service/Logger.go new file mode 100644 index 0000000..67f2ec1 --- /dev/null +++ b/service/Logger.go @@ -0,0 +1,16 @@ +package service + +const ( + LEVER_UNKNOW = 0 + LEVER_DEBUG = 1 + LEVER_INFO = 2 + LEVER_WARN = 3 + LEVER_ERROR = 4 + LEVER_FATAL = 5 + LEVEL_MAX = 6 +) + +type ILogger interface { + Printf(level uint, format string, v ...interface{}) + Print(level uint, v ...interface{}) +} diff --git a/service/Service.go b/service/Service.go index a093257..b73fcbd 100644 --- a/service/Service.go +++ b/service/Service.go @@ -123,6 +123,7 @@ func (slf *BaseService) Init(iservice IService, servicetype int) error { slf.servicename = fmt.Sprintf("%T", iservice) parts := strings.Split(slf.servicename, ".") if len(parts) != 2 { + GetLogger().Printf(LEVER_ERROR, "BaseService.Init: service name is error: %q", slf.servicename) err := fmt.Errorf("BaseService.Init: service name is error: %q", slf.servicename) return err } @@ -137,7 +138,7 @@ func (slf *BaseService) Init(iservice IService, servicetype int) error { func (slf *BaseService) RPC_CheckServiceTickTimeOut(microSecond int64) error { if slf.IsTimeOutTick(microSecond) == true { - Log.Printf("service:%s is timeout,state:%d", slf.GetServiceName(), slf.GetStatus()) + // Log.Printf("service:%s is timeout,state:%d", slf.GetServiceName(), slf.GetStatus()) } return nil @@ -227,6 +228,7 @@ func (slf *BaseModule) RunModule(module IModule, exit chan bool, pwaitGroup *syn for { select { case <-exit: + GetLogger().Printf(LEVER_WARN, "stopping module %s...", fmt.Sprintf("%T", slf)) fmt.Println("stopping module %s...", fmt.Sprintf("%T", slf)) return nil default: diff --git a/service/servicemanager.go b/service/servicemanager.go index 317b1f8..2955e6b 100644 --- a/service/servicemanager.go +++ b/service/servicemanager.go @@ -8,7 +8,7 @@ import ( type IServiceManager interface { Setup(s IService) bool - Init() bool + Init(logger ILogger) bool Start() bool CreateServiceID() int } @@ -16,6 +16,7 @@ type IServiceManager interface { type CServiceManager struct { genserviceid int localserviceMap map[string]IService + logger ILogger } func (slf *CServiceManager) Setup(s IService) bool { @@ -43,8 +44,9 @@ func (slf *CServiceManager) FetchService(s FetchService) IService { return nil } -func (slf *CServiceManager) Init() bool { +func (slf *CServiceManager) Init(logger ILogger) bool { + slf.logger = logger for _, s := range slf.localserviceMap { (s.(IModule)).InitModule(s.(IModule)) } @@ -103,6 +105,10 @@ func (slf *CServiceManager) Get() bool { return true } +func (slf *CServiceManager) GetLogger() ILogger { + return slf.logger +} + var _self *CServiceManager func InstanceServiceMgr() *CServiceManager { @@ -113,3 +119,7 @@ func InstanceServiceMgr() *CServiceManager { } return _self } + +func GetLogger() ILogger { + return InstanceServiceMgr().GetLogger() +}