1
0
Fork 0
logger/rotater/global.go

52 lines
911 B
Go
Raw Normal View History

2017-11-06 22:24:08 +09:00
package rotater
import (
"os"
"path"
"log"
)
var loggers RotateSyncerSet
func NewLogWriter(FileName string, MaxSizeMb, MaxBackup, MaxDay int, logDir string) 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 RotateSyncer) {
rotater.Sync()
rotater.Rotate()
})
log.Println("rotated")
}
func Close() {
loggers.Range(func(rotater RotateSyncer) {
rotater.Sync()
rotater.Close()
})
log.Println("end of log")
}