|
@@ -9,6 +9,7 @@
|
|
package logger
|
|
package logger
|
|
|
|
|
|
import (
|
|
import (
|
|
|
|
+ "errors"
|
|
"fmt"
|
|
"fmt"
|
|
"os"
|
|
"os"
|
|
"path/filepath"
|
|
"path/filepath"
|
|
@@ -37,6 +38,7 @@ const (
|
|
var (
|
|
var (
|
|
logger zerolog.Logger
|
|
logger zerolog.Logger
|
|
consoleLogger zerolog.Logger
|
|
consoleLogger zerolog.Logger
|
|
|
|
+ rollingLogger *lumberjack.Logger
|
|
)
|
|
)
|
|
|
|
|
|
// GetLogger get the configured logger instance
|
|
// GetLogger get the configured logger instance
|
|
@@ -48,13 +50,14 @@ func GetLogger() *zerolog.Logger {
|
|
func InitLogger(logFilePath string, logMaxSize int, logMaxBackups int, logMaxAge int, logCompress bool, level zerolog.Level) {
|
|
func InitLogger(logFilePath string, logMaxSize int, logMaxBackups int, logMaxAge int, logCompress bool, level zerolog.Level) {
|
|
zerolog.TimeFieldFormat = dateFormat
|
|
zerolog.TimeFieldFormat = dateFormat
|
|
if isLogFilePathValid(logFilePath) {
|
|
if isLogFilePathValid(logFilePath) {
|
|
- logger = zerolog.New(&lumberjack.Logger{
|
|
|
|
|
|
+ rollingLogger = &lumberjack.Logger{
|
|
Filename: logFilePath,
|
|
Filename: logFilePath,
|
|
MaxSize: logMaxSize,
|
|
MaxSize: logMaxSize,
|
|
MaxBackups: logMaxBackups,
|
|
MaxBackups: logMaxBackups,
|
|
MaxAge: logMaxAge,
|
|
MaxAge: logMaxAge,
|
|
Compress: logCompress,
|
|
Compress: logCompress,
|
|
- })
|
|
|
|
|
|
+ }
|
|
|
|
+ logger = zerolog.New(rollingLogger)
|
|
EnableConsoleLogger(level)
|
|
EnableConsoleLogger(level)
|
|
} else {
|
|
} else {
|
|
logger = zerolog.New(logSyncWrapper{
|
|
logger = zerolog.New(logSyncWrapper{
|
|
@@ -69,6 +72,7 @@ func InitLogger(logFilePath string, logMaxSize int, logMaxBackups int, logMaxAge
|
|
// ConsoleLogger will not be affected
|
|
// ConsoleLogger will not be affected
|
|
func DisableLogger() {
|
|
func DisableLogger() {
|
|
logger = zerolog.Nop()
|
|
logger = zerolog.Nop()
|
|
|
|
+ rollingLogger = nil
|
|
}
|
|
}
|
|
|
|
|
|
// EnableConsoleLogger enables the console logger
|
|
// EnableConsoleLogger enables the console logger
|
|
@@ -81,6 +85,14 @@ func EnableConsoleLogger(level zerolog.Level) {
|
|
consoleLogger = zerolog.New(consoleOutput).With().Timestamp().Logger().Level(level)
|
|
consoleLogger = zerolog.New(consoleOutput).With().Timestamp().Logger().Level(level)
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+// RotateLogFile closes the existing log file and immediately create a new one
|
|
|
|
+func RotateLogFile() error {
|
|
|
|
+ if rollingLogger != nil {
|
|
|
|
+ return rollingLogger.Rotate()
|
|
|
|
+ }
|
|
|
|
+ return errors.New("logging to file is disabled")
|
|
|
|
+}
|
|
|
|
+
|
|
// Log logs at the specified level for the specified sender
|
|
// Log logs at the specified level for the specified sender
|
|
func Log(level LogLevel, sender string, connectionID string, format string, v ...interface{}) {
|
|
func Log(level LogLevel, sender string, connectionID string, format string, v ...interface{}) {
|
|
switch level {
|
|
switch level {
|