mirror of
https://github.com/duanhf2012/origin.git
synced 2026-02-04 06:54:45 +08:00
新增日志模块
This commit is contained in:
@@ -2,6 +2,9 @@ package originnode
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
_ "net/http/pprof"
|
_ "net/http/pprof"
|
||||||
|
"sync"
|
||||||
|
|
||||||
|
"github.com/duanhf2012/origin/sysmodule"
|
||||||
|
|
||||||
"github.com/duanhf2012/origin/service"
|
"github.com/duanhf2012/origin/service"
|
||||||
)
|
)
|
||||||
@@ -23,3 +26,20 @@ func AddModule(module service.IModule) bool {
|
|||||||
func GetModuleByType(moduleType uint32) service.IModule {
|
func GetModuleByType(moduleType uint32) service.IModule {
|
||||||
return g_module.GetModuleByType(moduleType)
|
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)
|
||||||
|
}
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import (
|
|||||||
|
|
||||||
"github.com/duanhf2012/origin/cluster"
|
"github.com/duanhf2012/origin/cluster"
|
||||||
"github.com/duanhf2012/origin/service"
|
"github.com/duanhf2012/origin/service"
|
||||||
|
"github.com/duanhf2012/origin/sysmodule"
|
||||||
)
|
)
|
||||||
|
|
||||||
type CExitCtl struct {
|
type CExitCtl struct {
|
||||||
@@ -24,9 +25,13 @@ type COriginNode struct {
|
|||||||
CExitCtl
|
CExitCtl
|
||||||
serviceManager service.IServiceManager
|
serviceManager service.IServiceManager
|
||||||
sigs chan os.Signal
|
sigs chan os.Signal
|
||||||
|
debugCheck bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *COriginNode) Init() {
|
func (s *COriginNode) Init() {
|
||||||
|
|
||||||
|
//初始化全局模块
|
||||||
|
InitGlobalModule()
|
||||||
service.InitLog()
|
service.InitLog()
|
||||||
service.InstanceServiceMgr().Init()
|
service.InstanceServiceMgr().Init()
|
||||||
|
|
||||||
@@ -36,6 +41,10 @@ func (s *COriginNode) Init() {
|
|||||||
signal.Notify(s.sigs, syscall.SIGINT, syscall.SIGTERM)
|
signal.Notify(s.sigs, syscall.SIGINT, syscall.SIGTERM)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *COriginNode) OpenDebugCheck() {
|
||||||
|
s.debugCheck = true
|
||||||
|
}
|
||||||
|
|
||||||
func (s *COriginNode) SetupService(services ...service.IService) {
|
func (s *COriginNode) SetupService(services ...service.IService) {
|
||||||
for i := 0; i < len(services); i++ {
|
for i := 0; i < len(services); i++ {
|
||||||
if cluster.InstanceClusterMgr().HasLocalService(services[i].GetServiceName()) == true {
|
if cluster.InstanceClusterMgr().HasLocalService(services[i].GetServiceName()) == true {
|
||||||
@@ -62,11 +71,15 @@ func (s *COriginNode) SetupService(services ...service.IService) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *COriginNode) Start() {
|
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()
|
cluster.InstanceClusterMgr().Start()
|
||||||
|
RunGlobalModule(s.exit, s.waitGroup)
|
||||||
service.InstanceServiceMgr().Start(s.exit, s.waitGroup)
|
service.InstanceServiceMgr().Start(s.exit, s.waitGroup)
|
||||||
|
|
||||||
select {
|
select {
|
||||||
@@ -83,6 +96,11 @@ func (s *COriginNode) Stop() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func NewOrginNode() *COriginNode {
|
func NewOrginNode() *COriginNode {
|
||||||
|
var syslogmodule sysmodule.LogModule
|
||||||
|
syslogmodule.Init("system", sysmodule.LEVER_INFO)
|
||||||
|
syslogmodule.SetModuleType(sysmodule.SYS_LOG)
|
||||||
|
AddModule(&syslogmodule)
|
||||||
|
|
||||||
err := cluster.InstanceClusterMgr().Init()
|
err := cluster.InstanceClusterMgr().Init()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Print(err)
|
fmt.Print(err)
|
||||||
|
|||||||
@@ -53,14 +53,14 @@ var Log *log.Logger
|
|||||||
var logFile *os.File
|
var logFile *os.File
|
||||||
|
|
||||||
func InitLog() {
|
func InitLog() {
|
||||||
fileName := "log.log"
|
fileName := "system-" + time.Now().Format("2006-01-02") + ".log"
|
||||||
var err error
|
var err error
|
||||||
logFile, err = os.Create(fileName)
|
logFile, err = os.Create(fileName)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalln("open file error")
|
log.Fatalln("open file error")
|
||||||
}
|
}
|
||||||
Log = log.New(logFile, "", log.LstdFlags)
|
Log = log.New(logFile, "", log.Lshortfile|log.LstdFlags)
|
||||||
}
|
}
|
||||||
|
|
||||||
type BaseService struct {
|
type BaseService struct {
|
||||||
@@ -158,8 +158,6 @@ func (slf *BaseModule) GetModuleType() uint32 {
|
|||||||
return slf.moduleType
|
return slf.moduleType
|
||||||
}
|
}
|
||||||
|
|
||||||
//OnInit() error
|
|
||||||
//OnRun() error
|
|
||||||
func (slf *BaseModule) AddModule(module IModule) bool {
|
func (slf *BaseModule) AddModule(module IModule) bool {
|
||||||
if module.GetModuleType() == 0 {
|
if module.GetModuleType() == 0 {
|
||||||
return false
|
return false
|
||||||
|
|||||||
92
sysmodule/LogModule.go
Normal file
92
sysmodule/LogModule.go
Normal 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...)
|
||||||
|
}
|
||||||
7
sysmodule/SystemModuleDef.go
Normal file
7
sysmodule/SystemModuleDef.go
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
package sysmodule
|
||||||
|
|
||||||
|
//等级从低到高
|
||||||
|
const (
|
||||||
|
SYS_LOG = 1
|
||||||
|
SYS_TEST = 2
|
||||||
|
)
|
||||||
Reference in New Issue
Block a user