Skip to content

Instantly share code, notes, and snippets.

@syrm
Created July 12, 2021 11:06
Show Gist options
  • Save syrm/d89a9ec987efb4bade928ffbf37466c2 to your computer and use it in GitHub Desktop.
Save syrm/d89a9ec987efb4bade928ffbf37466c2 to your computer and use it in GitHub Desktop.
package logger
import "github.com/rs/zerolog"
type FilteredWriterAbove struct {
Writer zerolog.LevelWriter
Level zerolog.Level
}
func (w *FilteredWriterAbove) Write(p []byte) (n int, err error) {
return w.Writer.Write(p)
}
func (w *FilteredWriterAbove) WriteLevel(level zerolog.Level, p []byte) (n int, err error) {
if level >= w.Level {
return w.Writer.WriteLevel(level, p)
}
return len(p), nil
}
package logger
import "github.com/rs/zerolog"
type FilteredWriterBelow struct {
Writer zerolog.LevelWriter
Level zerolog.Level
}
func (w *FilteredWriterBelow) Write(p []byte) (n int, err error) {
return w.Writer.Write(p)
}
func (w *FilteredWriterBelow) WriteLevel(level zerolog.Level, p []byte) (n int, err error) {
if level <= w.Level {
return w.Writer.WriteLevel(level, p)
}
return len(p), nil
}
package main
func initLog() *zerolog.Logger {
zerolog.ErrorStackMarshaler = pkgerrors.MarshalStack
fCommon, _ := os.OpenFile("../data/log/common.log", os.O_APPEND|os.O_CREATE|os.O_RDWR, 0644)
fWarn, _ := os.OpenFile("../data/log/error.log", os.O_APPEND|os.O_CREATE|os.O_RDWR, 0644)
writerCommon := zerolog.MultiLevelWriter(fCommon)
writerWarn := zerolog.MultiLevelWriter(fWarn)
filteredWriteCommon := &logger.FilteredWriterBelow{Writer: writerCommon, Level: zerolog.InfoLevel}
filteredWriterWarn := &logger.FilteredWriterAbove{Writer: writerWarn, Level: zerolog.WarnLevel}
writer := zerolog.MultiLevelWriter(
zerolog.ConsoleWriter{Out: os.Stdout},
filteredWriteCommon,
filteredWriterWarn,
)
log := zerolog.New(writer).With().Caller().Timestamp().Logger()
return &log
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment