diff --git a/README.md b/README.md index 74427b4..f4c616b 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,44 @@ # Simple Log A very simple log system(golang). + +## Install + +```bash +go get github.com/lion187chen/simplelog +``` + +## Demo + +```go +package main + +import ( + "time" + + "github.com/lion187chen/simplelog" +) + +func CreateLog(file string, LogLevel simplelog.LogLevel) *simplelog.SimpleLog { + switch file { + case "": + return new(simplelog.SimpleLog).InitStd(LogLevel, simplelog.Ltime|simplelog.Lfile|simplelog.Llevel) + default: + return new(simplelog.SimpleLog).InitRotating(file, 1024*10, 10, LogLevel) + } +} + +func main() { + log := CreateLog("./log/MS.log", simplelog.LevelInfo) + for i := 0; i < 10000000; i++ { + log.Trace("hello world") + log.Debug("hello world") + log.Info("hello world") + log.Warn("hello world") + log.Error("hello world") + log.Fatal("hello world") + time.Sleep(8 * time.Millisecond) + } +} + +``` diff --git a/demo/main.go b/demo/main.go index b101914..546990f 100644 --- a/demo/main.go +++ b/demo/main.go @@ -6,12 +6,24 @@ import ( "github.com/lion187chen/simplelog" ) -var sl *simplelog.SimpleLog +func CreateLog(file string, LogLevel simplelog.LogLevel) *simplelog.SimpleLog { + switch file { + case "": + return new(simplelog.SimpleLog).InitStd(LogLevel, simplelog.Ltime|simplelog.Lfile|simplelog.Llevel) + default: + return new(simplelog.SimpleLog).InitRotating(file, 1024*10, 10, LogLevel) + } +} func main() { - sl = new(simplelog.SimpleLog).InitRotating("./log/MS.log", 1024*10, 10, simplelog.LevelTrace) + log := CreateLog("./log/MS.log", simplelog.LevelInfo) for i := 0; i < 10000000; i++ { - sl.Debug("hello world") + log.Trace("hello world") + log.Debug("hello world") + log.Info("hello world") + log.Warn("hello world") + log.Error("hello world") + log.Fatal("hello world") time.Sleep(8 * time.Millisecond) } } diff --git a/simplelog.go b/simplelog.go index 3a19a3b..1684b4c 100644 --- a/simplelog.go +++ b/simplelog.go @@ -28,9 +28,11 @@ import ( "time" ) +type LogLevel int + // log level, from low to high, more higher means more serious const ( - LevelTrace = iota + LevelTrace LogLevel = iota LevelDebug LevelInfo LevelWarn @@ -91,8 +93,8 @@ type SimpleLog struct { // log.Lfile // log.Llevel // 的组合 -func (l *SimpleLog) Init(handler StreamHandler, level, flag int) *SimpleLog { - l.level.Set(level) +func (l *SimpleLog) Init(handler StreamHandler, level LogLevel, flag int) *SimpleLog { + l.level.Set(int(level)) l.handler = handler l.flag = flag @@ -103,7 +105,7 @@ func (l *SimpleLog) Init(handler StreamHandler, level, flag int) *SimpleLog { return l } -func (l *SimpleLog) InitStd(level, flag int) *SimpleLog { +func (l *SimpleLog) InitStd(level LogLevel, flag int) *SimpleLog { handler, e := NewStreamHandle(os.Stdout) if e != nil { panic(e) @@ -112,7 +114,7 @@ func (l *SimpleLog) InitStd(level, flag int) *SimpleLog { return l.Init(handler, level, flag) } -func (l *SimpleLog) InitFile(name string, level, flag int) *SimpleLog { +func (l *SimpleLog) InitFile(name string, level LogLevel, flag int) *SimpleLog { handler, e := new(FileHandler).InitFile(name) if e != nil { panic(e) @@ -121,7 +123,7 @@ func (l *SimpleLog) InitFile(name string, level, flag int) *SimpleLog { return l.Init(handler, level, flag) } -func (l *SimpleLog) InitRotating(name string, maxBytes, backupCount, level int) *SimpleLog { +func (l *SimpleLog) InitRotating(name string, maxBytes, backupCount int, level LogLevel) *SimpleLog { handler, e := new(RotatingFileHandler).InitRotating(name, maxBytes, backupCount) if e != nil { panic(e) @@ -130,7 +132,7 @@ func (l *SimpleLog) InitRotating(name string, maxBytes, backupCount, level int) return l.Init(handler, level, Ltime|Lfile|Llevel) } -func (l *SimpleLog) InitTimedRotating(name string, when int8, interval, level int) *SimpleLog { +func (l *SimpleLog) InitTimedRotating(name string, when int8, interval int, level LogLevel) *SimpleLog { handler, e := new(TimedRotatingFileHandler).InitTimedRotating(name, when, interval) if e != nil { panic(e) @@ -172,8 +174,8 @@ func (l *SimpleLog) Close() { } // set log level, any log level less than it will not log -func (l *SimpleLog) SetLevel(level int) { - l.level.Set(level) +func (l *SimpleLog) SetLevel(level LogLevel) { + l.level.Set(int(level)) } // name can be in ["trace", "debug", "info", "warn", "error", "fatal"] @@ -208,13 +210,13 @@ func (l *SimpleLog) SetHandler(h StreamHandler) { l.hMutex.Unlock() } -func (l *SimpleLog) Output(callDepth int, level int, format string, v ...interface{}) { +func (l *SimpleLog) Output(callDepth int, level LogLevel, format string, v ...interface{}) { if l.closed.Get() == 1 { // closed return } - if l.level.Get() > level { + if l.level.Get() > int(level) { // higher level can be logged return }