compat with v2.0
This commit is contained in:
		
							parent
							
								
									623cc55dbd
								
							
						
					
					
						commit
						044ca3e36a
					
				
							
								
								
									
										46
									
								
								archive.go
									
									
									
									
									
								
							
							
						
						
									
										46
									
								
								archive.go
									
									
									
									
									
								
							@ -11,6 +11,12 @@ import (
 | 
			
		||||
	"b612.me/starmap"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var archMap starmap.StarMapKV
 | 
			
		||||
 | 
			
		||||
func init() {
 | 
			
		||||
	archMap = starmap.NewStarMap()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type Archive interface {
 | 
			
		||||
	ShouldArchiveNow(string, os.FileInfo) bool
 | 
			
		||||
	NextLogFilePath(string, os.FileInfo) string
 | 
			
		||||
@ -42,15 +48,15 @@ func SetLogFile(path string, logger *StarLogger, appendMode bool) error {
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	if starmap.MustGet(logger.logcore.id) != nil {
 | 
			
		||||
	if archMap.MustGet(logger.logcore.id) != nil {
 | 
			
		||||
		logger.SetSwitching(true)
 | 
			
		||||
		err := starmap.MustGet(logger.logcore.id).(logfileinfo).pointer.Close()
 | 
			
		||||
		err := archMap.MustGet(logger.logcore.id).(logfileinfo).pointer.Close()
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			logger.logcore.output = nil
 | 
			
		||||
			logger.SetSwitching(false)
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
		err = starmap.Delete(logger.logcore.id)
 | 
			
		||||
		err = archMap.Delete(logger.logcore.id)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			logger.logcore.output = nil
 | 
			
		||||
			logger.SetSwitching(false)
 | 
			
		||||
@ -58,7 +64,7 @@ func SetLogFile(path string, logger *StarLogger, appendMode bool) error {
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	err = starmap.Store(logger.logcore.id, logfileinfo{
 | 
			
		||||
	err = archMap.Store(logger.logcore.id, logfileinfo{
 | 
			
		||||
		fullpath: fullpath,
 | 
			
		||||
		pointer:  fp,
 | 
			
		||||
	})
 | 
			
		||||
@ -74,16 +80,15 @@ func SetLogFile(path string, logger *StarLogger, appendMode bool) error {
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Close(logger *StarLogger) error {
 | 
			
		||||
	defer logger.SetSwitching(false)
 | 
			
		||||
	if starmap.MustGet(logger.logcore.id) != nil {
 | 
			
		||||
func CloseWithSwitching(logger *StarLogger) error {
 | 
			
		||||
	if archMap.MustGet(logger.logcore.id) != nil {
 | 
			
		||||
		logger.SetSwitching(true)
 | 
			
		||||
		err := starmap.MustGet(logger.logcore.id).(*os.File).Close()
 | 
			
		||||
		err := archMap.MustGet(logger.logcore.id).(*os.File).Close()
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			logger.logcore.output = nil
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
		err = starmap.Delete(logger.logcore.id)
 | 
			
		||||
		err = archMap.Delete(logger.logcore.id)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
@ -91,19 +96,24 @@ func Close(logger *StarLogger) error {
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Close(logger *StarLogger) error {
 | 
			
		||||
	defer logger.SetSwitching(false)
 | 
			
		||||
	return CloseWithSwitching(logger)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func GetLogFileInfo(logger *StarLogger) (os.FileInfo, error) {
 | 
			
		||||
	if starmap.MustGet(logger.logcore.id) != nil {
 | 
			
		||||
		return starmap.MustGet(logger.logcore.id).(logfileinfo).pointer.Stat()
 | 
			
		||||
	if archMap.MustGet(logger.logcore.id) != nil {
 | 
			
		||||
		return archMap.MustGet(logger.logcore.id).(logfileinfo).pointer.Stat()
 | 
			
		||||
	}
 | 
			
		||||
	return nil, errors.New("logger don't have a register logfile")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func StartArchive(logger *StarLogger, arch Archive) error {
 | 
			
		||||
	if starmap.MustGet("arch"+logger.logcore.id) != nil {
 | 
			
		||||
	if archMap.MustGet("arch"+logger.logcore.id) != nil {
 | 
			
		||||
		return errors.New("already running")
 | 
			
		||||
	}
 | 
			
		||||
	stopChan := make(chan int)
 | 
			
		||||
	starmap.Store("arch"+logger.logcore.id, stopChan)
 | 
			
		||||
	archMap.Store("arch"+logger.logcore.id, stopChan)
 | 
			
		||||
	go func(stopChan chan int, arch Archive, logger *StarLogger) {
 | 
			
		||||
		for {
 | 
			
		||||
			select {
 | 
			
		||||
@ -116,11 +126,11 @@ func StartArchive(logger *StarLogger, arch Archive) error {
 | 
			
		||||
				logger.Errorf("cannot get log file info,reason is %v\n", err)
 | 
			
		||||
				continue
 | 
			
		||||
			}
 | 
			
		||||
			if starmap.MustGet(logger.logcore.id) == nil {
 | 
			
		||||
			if archMap.MustGet(logger.logcore.id) == nil {
 | 
			
		||||
				logger.Errorf("cannot get log core info from the map:no such keys\n")
 | 
			
		||||
				continue
 | 
			
		||||
			}
 | 
			
		||||
			fullpath := starmap.MustGet(logger.logcore.id).(logfileinfo).fullpath
 | 
			
		||||
			fullpath := archMap.MustGet(logger.logcore.id).(logfileinfo).fullpath
 | 
			
		||||
			if !arch.ShouldArchiveNow(fullpath, fileinfo) {
 | 
			
		||||
				continue
 | 
			
		||||
			}
 | 
			
		||||
@ -154,17 +164,17 @@ func StartArchive(logger *StarLogger, arch Archive) error {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func IsArchiveRun(logger *StarLogger) bool {
 | 
			
		||||
	if starmap.MustGet("arch"+logger.logcore.id) == nil {
 | 
			
		||||
	if archMap.MustGet("arch"+logger.logcore.id) == nil {
 | 
			
		||||
		return false
 | 
			
		||||
	}
 | 
			
		||||
	return true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func StopArchive(logger *StarLogger) {
 | 
			
		||||
	if starmap.MustGet("arch"+logger.logcore.id) == nil {
 | 
			
		||||
	if archMap.MustGet("arch"+logger.logcore.id) == nil {
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	starmap.MustGet("arch" + logger.logcore.id).(chan int) <- 1
 | 
			
		||||
	archMap.MustGet("arch" + logger.logcore.id).(chan int) <- 1
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type ArchiveByDate struct {
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										25
									
								
								core.go
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								core.go
									
									
									
									
									
								
							@ -10,6 +10,31 @@ import (
 | 
			
		||||
	"time"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func generateCoreLogStr(skip int, logstr string) string {
 | 
			
		||||
	var line int = 0
 | 
			
		||||
	var funcname, fileName string
 | 
			
		||||
	now := time.Now()
 | 
			
		||||
 | 
			
		||||
	pc, fName, codeln, ok := runtime.Caller(skip)
 | 
			
		||||
	if !ok {
 | 
			
		||||
		return ""
 | 
			
		||||
	}
 | 
			
		||||
	line = codeln
 | 
			
		||||
	funcname = runtime.FuncForPC(pc).Name()
 | 
			
		||||
	funcname = filepath.Ext(funcname)
 | 
			
		||||
	funcname = strings.TrimPrefix(funcname, ".")
 | 
			
		||||
	fileName = filepath.Base(fName)
 | 
			
		||||
 | 
			
		||||
	y, m, d := now.Date()
 | 
			
		||||
	h, i, s := now.Clock()
 | 
			
		||||
	micro := now.Nanosecond() / 1e3
 | 
			
		||||
	logStr := fmt.Sprintf("%04d-%02d-%02d %02d:%02d:%02d.%06d", y, m, d, h, i, s, micro)
 | 
			
		||||
	logStr += " " + fileName + ":" + strconv.Itoa(line)
 | 
			
		||||
	logStr += " <" + funcname + ">"
 | 
			
		||||
	logStr += " " + logstr
 | 
			
		||||
	return logStr
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (logger *starlog) build(thread string, isStd bool, handler func([]Attr, string), level int, logDetail string) {
 | 
			
		||||
	logger.mu.Lock()
 | 
			
		||||
	defer logger.mu.Unlock()
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										30
									
								
								standed.go
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								standed.go
									
									
									
									
									
								
							@ -1,6 +1,7 @@
 | 
			
		||||
package starlog
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"io"
 | 
			
		||||
	"math/rand"
 | 
			
		||||
	"sync"
 | 
			
		||||
@ -197,10 +198,37 @@ func Panicln(str ...interface{}) {
 | 
			
		||||
	stdmu.Lock()
 | 
			
		||||
	defer stdmu.Unlock()
 | 
			
		||||
	Std.isStd = true
 | 
			
		||||
	Std.Fatal(str...)
 | 
			
		||||
	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 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)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										12
									
								
								starlog.go
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								starlog.go
									
									
									
									
									
								
							@ -173,3 +173,15 @@ func (logger *StarLogger) Fatalf(format string, str ...interface{}) {
 | 
			
		||||
func (logger *StarLogger) Fatalln(str ...interface{}) {
 | 
			
		||||
	logger.logcore.Fatalln(logger.thread, logger.isStd, logger.handlerFunc, str...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (logger *StarLogger) Print(str ...interface{}) {
 | 
			
		||||
	logger.logcore.Print(logger.thread, logger.isStd, logger.handlerFunc, str...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (logger *StarLogger) Printf(format string, str ...interface{}) {
 | 
			
		||||
	logger.logcore.Printf(logger.thread, logger.isStd, logger.handlerFunc, format, str...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (logger *StarLogger) Println(str ...interface{}) {
 | 
			
		||||
	logger.logcore.Println(logger.thread, logger.isStd, logger.handlerFunc, str...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user