oc-deploy/src/log_wrapper/log_wrapper.go
2024-09-02 07:09:46 +00:00

49 lines
1.3 KiB
Go

package log_wrapper
// https://github.com/rs/zerolog/issues/150
import (
"os"
"github.com/rs/zerolog"
)
var mainLogVar zerolog.Logger
type FilteredWriter struct {
w zerolog.LevelWriter
level zerolog.Level
}
func (w *FilteredWriter) Write(p []byte) (n int, err error) {
return w.w.Write(p)
}
func (w *FilteredWriter) WriteLevel(level zerolog.Level, p []byte) (n int, err error) {
if level == w.level {
return w.w.WriteLevel(level, p)
}
return len(p), nil
}
func Log() *zerolog.Logger {
return &mainLogVar
}
func InitLog(serverName string) bool {
fAll, _ := os.OpenFile("./" + serverName + ".log", os.O_APPEND|os.O_CREATE|os.O_RDWR, 0644)
output := zerolog.ConsoleWriter{Out: os.Stdout}
writerInfo := zerolog.MultiLevelWriter(output)
writerError := zerolog.MultiLevelWriter(output)
writerFatal := zerolog.MultiLevelWriter(output)
filteredWriteInfo := &FilteredWriter{writerInfo, zerolog.InfoLevel}
filteredWriterError := &FilteredWriter{writerError, zerolog.ErrorLevel}
filteredWriterFatal := &FilteredWriter{writerFatal, zerolog.FatalLevel}
w := zerolog.MultiLevelWriter(fAll, filteredWriteInfo, filteredWriterError, filteredWriterFatal)
mainLogVar = zerolog.New(w).With().Timestamp().Logger()
return true
}