package hlog import ( "io" "os" "github.com/pkg/errors" "github.com/rs/zerolog" "github.com/rs/zerolog/pkgerrors" ) type Logger = zerolog.Logger // Get a pointer to a new zerolog.Logger with the specified level and output // Can provide a file, writer or both. Must provide at least one of the two func NewLogger( logLevel zerolog.Level, w io.Writer, logFile *os.File, logDir string, ) (*Logger, error) { if w == nil && logFile == nil { return nil, errors.New("No Writer provided for log output.") } zerolog.TimeFieldFormat = zerolog.TimeFormatUnix zerolog.ErrorStackMarshaler = pkgerrors.MarshalStack var consoleWriter zerolog.ConsoleWriter if w != nil { consoleWriter = zerolog.ConsoleWriter{Out: w} } var output io.Writer if logFile != nil { if w != nil { output = zerolog.MultiLevelWriter(logFile, consoleWriter) } else { output = logFile } } else { output = consoleWriter } logger := zerolog.New(output). With(). Timestamp(). Logger(). Level(logLevel) return &logger, nil }