heartwilltell / log

Simple leveled logging wrapper around standard log package

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

log - Simple leveled logging based on standard log package

logo

Documentation

Build codecov

Benefits

  • ๐Ÿ˜ป Leveled logging
  • ๐Ÿ˜š Simple API
  • ๐Ÿค fmt friendly
  • ๐Ÿ‘Œ Zero dependencies
  • ๐Ÿ˜ฎโ€๐Ÿ’จ No global logger
  • ๐Ÿ‘ No structured logging bullshit

Installation

go get github.com/heartwilltell/log

Leveled logging

The StdLog implements a simple interface:

// Logger formats the message according to standard format specifiers from the fmt package
// and writes the message to writer specified by the concrete interface implementation.
type Logger interface {
	// Error formats and writes the error level message.
	Error(format string, v ...any)
	// Warning formats and writes the warning level message.
	Warning(format string, v ...any)
	// Info formats and writes the information level message.
	Info(format string, v ...any)
	// Debug formats and writes the debug level message.
	Debug(format string, v ...any)
}

Usage

๐Ÿ‘‡ The usage is pretty simple. Just create a logger instance and call any of leveled methods.

logger := log.New()
logger.Info("Listen on port: %d", 8080)

๐Ÿ‘‡ Sets the logging level to debug level.

logger := log.New(log.WithLevel(log.DBG))

๐Ÿ‘‡ Parses string to level and creates logger with warning level.

level, levelErr := log.ParseLevel("warning")
if levelErr != nil {
	// handle error here
}

logger := log.New(log.WithLevel(level))

๐Ÿ‘‡ Creates logger with different io.Writer.

var w bytes.Buffer 

logger := log.New(log.WithWriter(w))

๐Ÿ‘‡ Disables the colorful output.

logger := log.New(log.WithNoColor())

๐Ÿ‘‡ Sets the UTC time format.

logger := log.New(log.WithUTC())

๐Ÿ‘‡ Enables printing the code line number.

// Short format:
// INF: 2022/07/08 11:22:30 server.go:111: message
logger := log.New(log.WithLineNum(log.ShortFmt))

OR

// Long format:
// INF: 2022/07/08 11:22:30 /Users/heartwilltell/Go/app/server.go:111: message
logger := log.New(log.WithLineNum(log.LongFmt))

๐Ÿ‘‡ Sets the level mark at the end of log prefix.

logger := log.New(log.WithLevelAtPrefixEnd())

Will produce this ๐Ÿ‘‡

// 2022/07/08 11:22:30 INF: message

Instead of this ๐Ÿ‘‡

// INF: 2022/07/08 11:22:30: message

๐Ÿ‘‡ Creates nop logger which implements log.Logger interface.

logger := log.NewNopLog()

๐Ÿ’ก Useful for tests or places where logger should be disabled by default

License

MIT License.

About

Simple leveled logging wrapper around standard log package

License:MIT License


Languages

Language:Go 100.0%