~xenrox/go-log

caa75b5ed1be927016131a3397c4a409a11c0d91 — Thorben Günther 1 year, 1 month ago 9e7356c
Add function to parse level from string without setting it

This can be used in combination with New(out, level).
1 files changed, 21 insertions(+), 14 deletions(-)

M log.go
M log.go => log.go +21 -14
@@ 47,6 47,24 @@ func New(out io.Writer, level Level) *Logger {
	return &Logger{Logger: log.New(out, "", log.LstdFlags), level: level}
}

// ParseLevelFromString parses the level from a string and returns it. If it
// cannot parse a legitimate level from the level string, it will return
// ErrInvalidLevel.
func ParseLevelFromString(level string) (Level, error) {
	switch strings.ToLower(level) {
	case "error":
		return Error, nil
	case "warning":
		return Warning, nil
	case "info":
		return Info, nil
	case "debug":
		return Debug, nil
	default:
		return Info, fmt.Errorf("%w: %s", ErrInvalidLevel, level)
	}
}

// SetLevel sets the logging level of a logger.
func (l *Logger) SetLevel(level Level) {
	l.level = level


@@ 56,20 74,9 @@ func (l *Logger) SetLevel(level Level) {
// level. If it cannot parse a legitimate level from the level string, it will
// return ErrInvalidLevel.
func (l *Logger) SetLevelFromString(level string) error {
	switch strings.ToLower(level) {
	case "error":
		l.level = Error
	case "warning":
		l.level = Warning
	case "info":
		l.level = Info
	case "debug":
		l.level = Debug
	default:
		return fmt.Errorf("%w: %s", ErrInvalidLevel, level)
	}

	return nil
	var err error
	l.level, err = ParseLevelFromString(level)
	return err
}

// Level returns the current logging level of a logger.