Ротация логов в полночь
Имеется код на go, хочу сделать чтоб в 0 часов и 0 минут произошло замена имени файла логов на новую дату в имени файла лога. Подскажите где ошибся.
package main
import (
"fmt"
rotatelogs "github.com/lestrrat/go-file-rotatelogs"
"log"
"time"
)
func initiLogger() {
path := "/home/john/logs/PS"
h, _ := time.ParseDuration("0h00m")
var writer, err = rotatelogs.New(
fmt.Sprintf("%s-%s", path, "%Y-%m-%d"),
//fmt.Sprintf("%s.%s", path, "%Y-%m-%d.%H:%M:%S"),
//rotatelogs.WithLinkName("/home/john/logs/current"),
rotatelogs.WithMaxAge(time.Hour*24),
rotatelogs.WithRotationTime(h),
//rotatelogs.WithRotationTime(time.Hour*24),
)
if err != nil {
log.Fatalf("Failed to Initialize Log File %s", err)
}
log.SetOutput(writer)
//log.SetFlags(log.LstdFlags | log.Lmicroseconds)
//log.SetPrefix("________________")
log.SetFlags(5)
return
}
func main() {
initiLogger()
fmt.Println("Start !!!", time.Now() )
log.Println("Start !!!", time.Now() )
for i := 0; i < 86400; i++ {
time.Sleep(time.Second * 1)
log.Printf("Hello, World! Its - 5")
}
log.Println("Done !!!", time.Now() )
fmt.Println("Done !!!", time.Now() )
}
Ответы (1 шт):
Автор решения: Евгений Галкин
→ Ссылка
Может кому поможет, как я решил данный вопрос
package main
import (
"fmt"
rotatelogs "github.com/lestrrat-go/file-rotatelogs"
"log"
"time"
)
func initiLogger() {
path := "PS"
var writer, err = rotatelogs.New(
fmt.Sprintf("%s-%s", path, "%Y-%m-%d"),
rotatelogs.WithMaxAge(time.Hour*24),
rotatelogs.WithRotationTime(time.Hour*24),
)
if err != nil {
log.Fatalf("Failed to Initialize Log File %s", err)
}
log.SetFlags(5)
log.SetOutput(writer)
return
}
func main() {
initiLogger()
fmt.Println("Start !!!", time.Now())
log.Println("Start !!!", time.Now())
for i := 0; i < 90; i++ {
time.Sleep(time.Second * 60)
log.Printf("Hello, World! Its - 5")
}
log.Println("Done !!!", time.Now())
fmt.Println("Done !!!", time.Now())
}