49 lines
1.3 KiB
Go
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
|
|
}
|