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() +}