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 }