|
|
|
package starlog
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"io"
|
|
|
|
"math/rand"
|
|
|
|
"sync"
|
|
|
|
"time"
|
|
|
|
)
|
|
|
|
|
|
|
|
var Std *StarLogger
|
|
|
|
var stdmu sync.Mutex
|
|
|
|
|
|
|
|
func init() {
|
|
|
|
rand.Seed(time.Now().UnixNano())
|
|
|
|
stackStopChan = make(chan int)
|
|
|
|
StartStacks()
|
|
|
|
Std = NewStarlog(nil)
|
|
|
|
}
|
|
|
|
|
|
|
|
func SetShowColor(val bool) {
|
|
|
|
Std.SetShowColor(val)
|
|
|
|
}
|
|
|
|
|
|
|
|
func GetShowColor() bool {
|
|
|
|
return Std.GetShowColor()
|
|
|
|
}
|
|
|
|
|
|
|
|
func SetLevelColor(level int, color []Attr) {
|
|
|
|
Std.SetLevelColor(level, color)
|
|
|
|
}
|
|
|
|
|
|
|
|
func GetLevelColor(level int) []Attr {
|
|
|
|
return Std.GetLevelColor(level)
|
|
|
|
}
|
|
|
|
|
|
|
|
func Debug(str ...interface{}) {
|
|
|
|
stdmu.Lock()
|
|
|
|
defer stdmu.Unlock()
|
|
|
|
Std.isStd = true
|
|
|
|
Std.Debug(str...)
|
|
|
|
Std.isStd = false
|
|
|
|
}
|
|
|
|
|
|
|
|
func Debugf(format string, str ...interface{}) {
|
|
|
|
stdmu.Lock()
|
|
|
|
defer stdmu.Unlock()
|
|
|
|
Std.isStd = true
|
|
|
|
Std.Debugf(format, str...)
|
|
|
|
Std.isStd = false
|
|
|
|
}
|
|
|
|
|
|
|
|
func Debugln(str ...interface{}) {
|
|
|
|
stdmu.Lock()
|
|
|
|
defer stdmu.Unlock()
|
|
|
|
Std.isStd = true
|
|
|
|
Std.Debugln(str...)
|
|
|
|
Std.isStd = false
|
|
|
|
}
|
|
|
|
|
|
|
|
func Info(str ...interface{}) {
|
|
|
|
stdmu.Lock()
|
|
|
|
defer stdmu.Unlock()
|
|
|
|
Std.isStd = true
|
|
|
|
Std.Info(str...)
|
|
|
|
Std.isStd = false
|
|
|
|
}
|
|
|
|
|
|
|
|
func Infof(format string, str ...interface{}) {
|
|
|
|
stdmu.Lock()
|
|
|
|
defer stdmu.Unlock()
|
|
|
|
Std.isStd = true
|
|
|
|
Std.Infof(format, str...)
|
|
|
|
Std.isStd = false
|
|
|
|
}
|
|
|
|
|
|
|
|
func Infoln(str ...interface{}) {
|
|
|
|
stdmu.Lock()
|
|
|
|
defer stdmu.Unlock()
|
|
|
|
Std.isStd = true
|
|
|
|
Std.Infoln(str...)
|
|
|
|
Std.isStd = false
|
|
|
|
}
|
|
|
|
|
|
|
|
func Notice(str ...interface{}) {
|
|
|
|
stdmu.Lock()
|
|
|
|
defer stdmu.Unlock()
|
|
|
|
Std.isStd = true
|
|
|
|
Std.Notice(str...)
|
|
|
|
Std.isStd = false
|
|
|
|
}
|
|
|
|
|
|
|
|
func Noticef(format string, str ...interface{}) {
|
|
|
|
stdmu.Lock()
|
|
|
|
defer stdmu.Unlock()
|
|
|
|
Std.isStd = true
|
|
|
|
Std.Noticef(format, str...)
|
|
|
|
Std.isStd = false
|
|
|
|
}
|
|
|
|
|
|
|
|
func Noticeln(str ...interface{}) {
|
|
|
|
stdmu.Lock()
|
|
|
|
defer stdmu.Unlock()
|
|
|
|
Std.isStd = true
|
|
|
|
Std.Noticeln(str...)
|
|
|
|
Std.isStd = false
|
|
|
|
}
|
|
|
|
|
|
|
|
func Warning(str ...interface{}) {
|
|
|
|
stdmu.Lock()
|
|
|
|
defer stdmu.Unlock()
|
|
|
|
Std.isStd = true
|
|
|
|
Std.Warning(str...)
|
|
|
|
Std.isStd = false
|
|
|
|
}
|
|
|
|
|
|
|
|
func Warningf(format string, str ...interface{}) {
|
|
|
|
stdmu.Lock()
|
|
|
|
defer stdmu.Unlock()
|
|
|
|
Std.isStd = true
|
|
|
|
Std.Warningf(format, str...)
|
|
|
|
Std.isStd = false
|
|
|
|
}
|
|
|
|
|
|
|
|
func Warningln(str ...interface{}) {
|
|
|
|
stdmu.Lock()
|
|
|
|
defer stdmu.Unlock()
|
|
|
|
Std.isStd = true
|
|
|
|
Std.Warningln(str...)
|
|
|
|
Std.isStd = false
|
|
|
|
}
|
|
|
|
|
|
|
|
func Error(str ...interface{}) {
|
|
|
|
stdmu.Lock()
|
|
|
|
defer stdmu.Unlock()
|
|
|
|
Std.isStd = true
|
|
|
|
Std.Error(str...)
|
|
|
|
Std.isStd = false
|
|
|
|
}
|
|
|
|
|
|
|
|
func Errorf(format string, str ...interface{}) {
|
|
|
|
stdmu.Lock()
|
|
|
|
defer stdmu.Unlock()
|
|
|
|
Std.isStd = true
|
|
|
|
Std.Errorf(format, str...)
|
|
|
|
Std.isStd = false
|
|
|
|
}
|
|
|
|
|
|
|
|
func Errorln(str ...interface{}) {
|
|
|
|
stdmu.Lock()
|
|
|
|
defer stdmu.Unlock()
|
|
|
|
Std.isStd = true
|
|
|
|
Std.Errorln(str...)
|
|
|
|
Std.isStd = false
|
|
|
|
}
|
|
|
|
|
|
|
|
func Critical(str ...interface{}) {
|
|
|
|
stdmu.Lock()
|
|
|
|
defer stdmu.Unlock()
|
|
|
|
Std.isStd = true
|
|
|
|
Std.Critical(str...)
|
|
|
|
Std.isStd = false
|
|
|
|
}
|
|
|
|
|
|
|
|
func Criticalf(format string, str ...interface{}) {
|
|
|
|
stdmu.Lock()
|
|
|
|
defer stdmu.Unlock()
|
|
|
|
Std.isStd = true
|
|
|
|
Std.Criticalf(format, str...)
|
|
|
|
Std.isStd = false
|
|
|
|
}
|
|
|
|
|
|
|
|
func Criticalln(str ...interface{}) {
|
|
|
|
stdmu.Lock()
|
|
|
|
defer stdmu.Unlock()
|
|
|
|
Std.isStd = true
|
|
|
|
Std.Criticalln(str...)
|
|
|
|
Std.isStd = false
|
|
|
|
}
|
|
|
|
|
|
|
|
func Fatal(str ...interface{}) {
|
|
|
|
stdmu.Lock()
|
|
|
|
defer stdmu.Unlock()
|
|
|
|
Std.isStd = true
|
|
|
|
Std.Fatal(str...)
|
|
|
|
Std.isStd = false
|
|
|
|
}
|
|
|
|
|
|
|
|
func Fatalf(format string, str ...interface{}) {
|
|
|
|
stdmu.Lock()
|
|
|
|
defer stdmu.Unlock()
|
|
|
|
Std.isStd = true
|
|
|
|
Std.Fatalf(format, str...)
|
|
|
|
Std.isStd = false
|
|
|
|
}
|
|
|
|
|
|
|
|
func Panicln(str ...interface{}) {
|
|
|
|
stdmu.Lock()
|
|
|
|
defer stdmu.Unlock()
|
|
|
|
Std.isStd = true
|
|
|
|
Std.Fatalln(str...)
|
|
|
|
Std.isStd = false
|
|
|
|
}
|
|
|
|
|
|
|
|
func Print(str ...interface{}) {
|
|
|
|
Std.Print(str...)
|
|
|
|
}
|
|
|
|
|
|
|
|
func Printf(format string, str ...interface{}) {
|
|
|
|
Std.Printf(format, str...)
|
|
|
|
}
|
|
|
|
|
|
|
|
func Println(str ...interface{}) {
|
|
|
|
Std.Println(str...)
|
|
|
|
}
|
|
|
|
|
|
|
|
func Log(isShow bool, level int, str ...interface{}) {
|
|
|
|
stdmu.Lock()
|
|
|
|
defer stdmu.Unlock()
|
|
|
|
Std.isStd = true
|
|
|
|
Std.Log(isShow, level, str...)
|
|
|
|
Std.isStd = false
|
|
|
|
}
|
|
|
|
|
|
|
|
func Logf(isShow bool, level int, format string, str ...interface{}) {
|
|
|
|
stdmu.Lock()
|
|
|
|
defer stdmu.Unlock()
|
|
|
|
Std.isStd = true
|
|
|
|
Std.Logf(isShow, level, format, str...)
|
|
|
|
Std.isStd = false
|
|
|
|
}
|
|
|
|
|
|
|
|
func Logln(isShow bool, level int, str ...interface{}) {
|
|
|
|
stdmu.Lock()
|
|
|
|
defer stdmu.Unlock()
|
|
|
|
Std.isStd = true
|
|
|
|
Std.Logln(isShow, level, str...)
|
|
|
|
Std.isStd = false
|
|
|
|
}
|
|
|
|
|
|
|
|
func StdPrint(attr []Attr, str ...interface{}) {
|
|
|
|
strs := fmt.Sprint(str...)
|
|
|
|
NewColor(attr...).Fprint(stdScreen, strs)
|
|
|
|
}
|
|
|
|
|
|
|
|
func StdPrintf(attr []Attr, format string, str ...interface{}) {
|
|
|
|
strs := fmt.Sprintf(format, str...)
|
|
|
|
NewColor(attr...).Fprint(stdScreen, strs)
|
|
|
|
}
|
|
|
|
|
|
|
|
func StdPrintln(attr []Attr, str ...interface{}) {
|
|
|
|
strs := fmt.Sprintln(str...)
|
|
|
|
NewColor(attr...).Fprint(stdScreen, strs)
|
|
|
|
}
|
|
|
|
|
|
|
|
func SetWriter(wr io.Writer) {
|
|
|
|
Std.SetWriter(wr)
|
|
|
|
}
|
|
|
|
func GetWriter() io.Writer {
|
|
|
|
return Std.GetWriter()
|
|
|
|
}
|
|
|
|
|
|
|
|
func SetHandler(f func([]Attr, string)) {
|
|
|
|
Std.SetHandler(f)
|
|
|
|
}
|
|
|
|
func GetHandler() func([]Attr, string) {
|
|
|
|
return Std.GetHandler()
|
|
|
|
}
|
|
|
|
func SetSwitching(sw bool) {
|
|
|
|
Std.SetSwitching(sw)
|
|
|
|
}
|
|
|
|
|
|
|
|
func SetShowOriginFile(val bool) {
|
|
|
|
Std.SetShowOriginFile(val)
|
|
|
|
}
|
|
|
|
|
|
|
|
func GetShowOriginFile() bool {
|
|
|
|
return Std.GetShowOriginFile()
|
|
|
|
}
|
|
|
|
|
|
|
|
func SetShowFuncName(val bool) {
|
|
|
|
Std.logcore.showFuncName = val
|
|
|
|
}
|
|
|
|
|
|
|
|
func GetShowFuncName() bool {
|
|
|
|
return Std.logcore.showFuncName
|
|
|
|
}
|
|
|
|
|
|
|
|
func SetShowLevel(val bool) {
|
|
|
|
Std.SetShowLevel(val)
|
|
|
|
}
|
|
|
|
|
|
|
|
func GetShowLevel() bool {
|
|
|
|
return Std.GetShowLevel()
|
|
|
|
}
|
|
|
|
|
|
|
|
func SetShowFlag(val bool) {
|
|
|
|
Std.SetShowFlag(val)
|
|
|
|
}
|
|
|
|
|
|
|
|
func GetShowFlag() bool {
|
|
|
|
return Std.GetShowFlag()
|
|
|
|
}
|
|
|
|
|
|
|
|
func SetShowStd(val bool) {
|
|
|
|
Std.SetShowStd(val)
|
|
|
|
}
|
|
|
|
|
|
|
|
func GetShowStd() bool {
|
|
|
|
return Std.GetShowStd()
|
|
|
|
}
|
|
|
|
|
|
|
|
func StopWrite() {
|
|
|
|
Std.StopWrite()
|
|
|
|
}
|
|
|
|
|
|
|
|
func EnbaleWrite() {
|
|
|
|
Std.EnbaleWrite()
|
|
|
|
}
|
|
|
|
|
|
|
|
func IsWriteStoed() bool {
|
|
|
|
return Std.IsWriteStoed()
|
|
|
|
}
|