56 lines
945 B
Go
56 lines
945 B
Go
|
//
|
||
|
// access.go
|
||
|
// Copyright (C) 2022 tiglog <me@tiglog.com>
|
||
|
//
|
||
|
// Distributed under terms of the MIT license.
|
||
|
//
|
||
|
|
||
|
package logger
|
||
|
|
||
|
import (
|
||
|
"os"
|
||
|
"sync"
|
||
|
"time"
|
||
|
|
||
|
"github.com/natefinch/lumberjack"
|
||
|
"github.com/rs/zerolog"
|
||
|
"github.com/rs/zerolog/pkgerrors"
|
||
|
)
|
||
|
|
||
|
var access_once sync.Once
|
||
|
|
||
|
var access_log *zerolog.Logger
|
||
|
|
||
|
var access_log_path = "./var/log/access.log"
|
||
|
|
||
|
func SetupAccessLogFile(path string) {
|
||
|
access_log_path = path
|
||
|
}
|
||
|
|
||
|
func Access() *zerolog.Logger {
|
||
|
access_once.Do(func() {
|
||
|
zerolog.ErrorStackMarshaler = pkgerrors.MarshalStack
|
||
|
zerolog.TimeFieldFormat = time.RFC3339Nano
|
||
|
|
||
|
fileLogger := &lumberjack.Logger{
|
||
|
Filename: access_log_path,
|
||
|
MaxSize: 5, //
|
||
|
MaxBackups: 10,
|
||
|
MaxAge: 14,
|
||
|
Compress: true,
|
||
|
}
|
||
|
|
||
|
output := zerolog.MultiLevelWriter(os.Stderr, fileLogger)
|
||
|
|
||
|
l := zerolog.New(output).
|
||
|
Level(zerolog.InfoLevel).
|
||
|
With().
|
||
|
Timestamp().
|
||
|
Logger()
|
||
|
|
||
|
access_log = &l
|
||
|
})
|
||
|
|
||
|
return access_log
|
||
|
}
|