新增日志模块

This commit is contained in:
boyce
2019-02-12 17:19:22 +08:00
parent 188ee36057
commit 4a9ab2e899
5 changed files with 142 additions and 7 deletions

View File

@@ -2,6 +2,9 @@ package originnode
import (
_ "net/http/pprof"
"sync"
"github.com/duanhf2012/origin/sysmodule"
"github.com/duanhf2012/origin/service"
)
@@ -23,3 +26,20 @@ func AddModule(module service.IModule) bool {
func GetModuleByType(moduleType uint32) service.IModule {
return g_module.GetModuleByType(moduleType)
}
func GetLog(logmodule uint32) sysmodule.ILogger {
module := g_module.GetModuleByType(logmodule)
if nil == module {
return nil
}
return module.(sysmodule.ILogger)
}
func InitGlobalModule() {
g_module.InitModule(&g_module)
}
func RunGlobalModule(exit chan bool, pwaitGroup *sync.WaitGroup) {
g_module.RunModule(&g_module, exit, pwaitGroup)
}

View File

@@ -13,6 +13,7 @@ import (
"github.com/duanhf2012/origin/cluster"
"github.com/duanhf2012/origin/service"
"github.com/duanhf2012/origin/sysmodule"
)
type CExitCtl struct {
@@ -24,9 +25,13 @@ type COriginNode struct {
CExitCtl
serviceManager service.IServiceManager
sigs chan os.Signal
debugCheck bool
}
func (s *COriginNode) Init() {
//初始化全局模块
InitGlobalModule()
service.InitLog()
service.InstanceServiceMgr().Init()
@@ -36,6 +41,10 @@ func (s *COriginNode) Init() {
signal.Notify(s.sigs, syscall.SIGINT, syscall.SIGTERM)
}
func (s *COriginNode) OpenDebugCheck() {
s.debugCheck = true
}
func (s *COriginNode) SetupService(services ...service.IService) {
for i := 0; i < len(services); i++ {
if cluster.InstanceClusterMgr().HasLocalService(services[i].GetServiceName()) == true {
@@ -62,11 +71,15 @@ func (s *COriginNode) SetupService(services ...service.IService) {
}
func (s *COriginNode) Start() {
go func() {
if s.debugCheck == true {
go func() {
log.Println(http.ListenAndServe("localhost:6060", nil))
}()
}
log.Println(http.ListenAndServe("localhost:6060", nil))
}()
cluster.InstanceClusterMgr().Start()
RunGlobalModule(s.exit, s.waitGroup)
service.InstanceServiceMgr().Start(s.exit, s.waitGroup)
select {
@@ -83,6 +96,11 @@ func (s *COriginNode) Stop() {
}
func NewOrginNode() *COriginNode {
var syslogmodule sysmodule.LogModule
syslogmodule.Init("system", sysmodule.LEVER_INFO)
syslogmodule.SetModuleType(sysmodule.SYS_LOG)
AddModule(&syslogmodule)
err := cluster.InstanceClusterMgr().Init()
if err != nil {
fmt.Print(err)

View File

@@ -53,14 +53,14 @@ var Log *log.Logger
var logFile *os.File
func InitLog() {
fileName := "log.log"
fileName := "system-" + time.Now().Format("2006-01-02") + ".log"
var err error
logFile, err = os.Create(fileName)
if err != nil {
log.Fatalln("open file error")
}
Log = log.New(logFile, "", log.LstdFlags)
Log = log.New(logFile, "", log.Lshortfile|log.LstdFlags)
}
type BaseService struct {
@@ -158,8 +158,6 @@ func (slf *BaseModule) GetModuleType() uint32 {
return slf.moduleType
}
//OnInit() error
//OnRun() error
func (slf *BaseModule) AddModule(module IModule) bool {
if module.GetModuleType() == 0 {
return false

92
sysmodule/LogModule.go Normal file
View File

@@ -0,0 +1,92 @@
package sysmodule
import (
"fmt"
"log"
"os"
"time"
"github.com/duanhf2012/origin/service"
)
//等级从低到高
const (
LEVER_UNKNOW = 0
LEVER_DEBUG = 1
LEVER_INFO = 2
LEVER_WARN = 3
LEVER_ERROR = 4
LEVER_FATAL = 5
LEVEL_MAX = 6
)
var LogPrefix = [LEVEL_MAX]string{"[UNKNOW]", "[DEBUG]", "[INFO]", "[WARN]", "[ERROR]", "[FATAL]"}
type ILogger interface {
Printf(level uint, format string, v ...interface{})
Print(level uint, v ...interface{})
}
type LogModule struct {
service.BaseModule
currentDay int
logfilename string
logger [LEVEL_MAX]*log.Logger
logFile *os.File
openLevel uint
}
func (slf *LogModule) GetCurrentFileName() string {
return slf.logfilename + "-" + time.Now().Format("2006-01-02") + ".log"
}
func (slf *LogModule) CheckAndGenFile() {
if time.Now().Day() != slf.currentDay {
slf.currentDay = time.Now().Day()
if slf.logFile != nil {
slf.logFile.Close()
}
var err error
slf.logFile, err = os.Create(slf.GetCurrentFileName())
if err != nil {
fmt.Print("create log file %s error!", slf.GetCurrentFileName())
return
}
for level := 0; level < LEVEL_MAX; level++ {
slf.logger[level] = log.New(slf.logFile, LogPrefix[level], log.Lshortfile|log.LstdFlags)
}
}
}
func (slf *LogModule) Init(logfilename string, openLevel uint) {
slf.currentDay = 0
slf.logfilename = logfilename
slf.openLevel = openLevel
}
func (slf *LogModule) GetLoggerByLevel(level uint) *log.Logger {
if level >= LEVEL_MAX {
level = 0
}
return slf.logger[level]
}
func (slf *LogModule) Printf(level uint, format string, v ...interface{}) {
if level < slf.openLevel {
return
}
slf.CheckAndGenFile()
slf.GetLoggerByLevel(level).Printf(format, v...)
}
func (slf *LogModule) Print(level uint, v ...interface{}) {
if level < slf.openLevel {
return
}
slf.CheckAndGenFile()
slf.GetLoggerByLevel(level).Print(v...)
}

View File

@@ -0,0 +1,7 @@
package sysmodule
//等级从低到高
const (
SYS_LOG = 1
SYS_TEST = 2
)