mirror of https://github.com/curusarn/resh
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
28 lines
808 B
28 lines
808 B
package logger
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"go.uber.org/zap"
|
|
"go.uber.org/zap/zapcore"
|
|
)
|
|
|
|
func New(executable string, level zapcore.Level, developement bool) (*zap.Logger, error) {
|
|
// TODO: consider getting log path from config ?
|
|
homeDir, err := os.UserHomeDir()
|
|
if err != nil {
|
|
return nil, fmt.Errorf("error while getting home dir: %w", err)
|
|
}
|
|
logPath := filepath.Join(homeDir, ".resh/log.json")
|
|
loggerConfig := zap.NewProductionConfig()
|
|
loggerConfig.OutputPaths = []string{logPath}
|
|
loggerConfig.Level.SetLevel(level)
|
|
loggerConfig.Development = developement // DPanic panics in developement
|
|
logger, err := loggerConfig.Build()
|
|
if err != nil {
|
|
return logger, fmt.Errorf("error while creating logger: %w", err)
|
|
}
|
|
return logger.With(zap.String("executable", executable)), err
|
|
}
|
|
|