infra
/
goutils
Archived
1
0
Fork 0
This repository has been archived on 2022-04-06. You can view files and clone it, but cannot push or open issues or pull requests.
goutils/logger/rotater/global.go

53 lines
968 B
Go

package rotater
import (
"os"
"path"
"log"
"amuz.es/src/infra/goutils/logger"
)
var loggers RotateSyncerSet
func NewLogWriter(FileName string, MaxSizeMb, MaxBackup, MaxDay int, logDir string) logger.RotateSyncer {
switch FileName {
case "Stdout":
return NewLocked(os.Stdout)
case "Stderr":
return NewLocked(os.Stderr)
default:
logpath := FileName
if logDir != "" {
logpath = path.Join(logDir, FileName)
}
log.Println(" Attention!! log writes to ", logpath)
logWriter := NewRotater(
logpath,
MaxSizeMb, // megabytes
MaxBackup,
MaxDay, //days
)
loggers.Store(logWriter)
logWriter.SetOnClose(func() { loggers.Delete(logWriter) })
return logWriter
}
}
func Rotate() {
loggers.Range(func(rotater logger.RotateSyncer) {
rotater.Sync()
rotater.Rotate()
})
log.Println("rotated")
}
func Close() {
loggers.Range(func(rotater logger.RotateSyncer) {
rotater.Sync()
rotater.Close()
})
log.Println("end of log")
}