logger

package module
v0.0.0-...-992316c Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 12, 2019 License: MIT Imports: 7 Imported by: 0

README

Build Status

go-logger

A simple and opinionated logging package for Go.

The core goal of this library is to provide severity based logging functionality in a concurrency safe manner.

Outside of this core goal, this library tries to remaining as close to the standard log package as possible.

Usage

The most common way to use this library is by logging with the default logger.

package main

import (
	"net/http"
	"sync"

	kingpin "gopkg.in/alecthomas/kingpin.v2"

	logger "github.com/MrAlias/go-logger"
	severity "github.com/MrAlias/go-logger/severity"
)

var logLevel = kingpin.Flag("log-level", "set minimum log level").Default("INFO").Enum("DEBUG", "INFO", "ERROR")

func main() {
	kingpin.Parse()

	switch *logLevel {
	case "DEBUG":
		logger.SetSeverity(severity.Debug)
	case "INFO":
		logger.SetSeverity(severity.Info)
	case "ERROR":
		logger.SetSeverity(severity.Error)
	default:
		panic("invalid log-level")
	}

	var wg sync.WaitGroup
	var feeds = []string{
		"https://xkcd.com/rss.xml",
		"https://blog.golang.org/feed.atom",
		"not a valid url",
	}
	for _, feed := range feeds {
		wg.Add(1)
		go func(f string) {
			defer wg.Done()
			logger.Debug("pulling feed: ", f)
			if _, err := http.Get(f); err != nil {
				logger.Errorf("failed to pull %q: %v", f, err)
			} else {
				logger.Infof("pulled %q successfully", f)
			}
		}(feed)
	}
	wg.Wait()
}

An example of running the above code might look like this.

$ go run code-from-above.go --log-level=DEBUG
DEBUG: pulling feed: not a valid url
DEBUG: pulling feed: https://xkcd.com/rss.xml
ERROR: failed to pull "not a valid url": Get not%20a%20valid%20url: unsupported protocol scheme ""
DEBUG: pulling feed: https://blog.golang.org/feed.atom
INFO : pulled "https://blog.golang.org/feed.atom" successfully
INFO : pulled "https://xkcd.com/rss.xml" successfully

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Debug

func Debug(v ...interface{})

Debug logs with `debug` severity to the default logger. Arguments are handled in the same manner as fmt.Print, but a new line is appended to the end if one not specified.

func Debugf

func Debugf(format string, v ...interface{})

Debugf logs with `debug` severity to the default logger. Arguments are handled in the same manner as fmt.Printf, but a new line is appended to the end if one not specified.

func Debugln

func Debugln(v ...interface{})

Debugln logs with `debug` severity to the default logger. Arguments are handled in the same manner as fmt.Println.

func Error

func Error(v ...interface{})

Error is like Debug, but logs with `error` severity.

func Errorf

func Errorf(format string, v ...interface{})

Errorf is like Debugf, but logs at an `error` severity.

func Errorln

func Errorln(v ...interface{})

Errorln is like Debugln, but logs with `error` severity.

func Flags

func Flags() int

Flags returns the output flags for the default logger.

func Info

func Info(v ...interface{})

Info is like Debug, but logs with `info` severity.

func Infof

func Infof(format string, v ...interface{})

Infof is like Debugf, but logs with `info` severity.

func Infoln

func Infoln(v ...interface{})

Infoln is like Debugln, but logs with `info` severity.

func SetFlags

func SetFlags(flags int)

SetFlags sets the output flags for the default logger.

func SetOutput

func SetOutput(w io.Writer)

SetOutput sets the output destination for the default logger.

func SetSeverity

func SetSeverity(level severity.Level)

SetSeverity sets the minimum severity level the default logger logs at.

func Severity

func Severity() severity.Level

Severity returns the minimum severity level the default logger logs at.

Types

type Logger

type Logger struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

Logger - Severity based log writer.

func New

func New(level severity.Level, flags int, w io.Writer) *Logger

New returns a new Logger set to log with severity level and flags to w.

func (*Logger) Debug

func (l *Logger) Debug(v ...interface{})

Debug logs with `debug` severity. Arguments are handled in the same manner as fmt.Print, but a new line is appended to the end if one not specified.

func (*Logger) Debugf

func (l *Logger) Debugf(format string, v ...interface{})

Debugf logs with `debug` severity. Arguments are handled in the same manner as fmt.Printf, but a new line is appended to the end if one not specified.

func (*Logger) Debugln

func (l *Logger) Debugln(v ...interface{})

Debugln logs with `debug` severity. Arguments are handled in the same manner as fmt.Println.

func (*Logger) Error

func (l *Logger) Error(v ...interface{})

Error is like Debug, but logs with `error` severity.

func (*Logger) Errorf

func (l *Logger) Errorf(format string, v ...interface{})

Errorf is like Debugf, but logs at an `error` severity.

func (*Logger) Errorln

func (l *Logger) Errorln(v ...interface{})

Errorln is like Debugln, but logs with `error` severity.

func (*Logger) Flags

func (l *Logger) Flags() int

Flags returns the output flags for the logger.

func (*Logger) Info

func (l *Logger) Info(v ...interface{})

Info is like Debug, but logs with `info` severity.

func (*Logger) Infof

func (l *Logger) Infof(format string, v ...interface{})

Infof is like Debugf, but logs with `info` severity.

func (*Logger) Infoln

func (l *Logger) Infoln(v ...interface{})

Infoln is like Debugln, but logs with `info` severity.

func (*Logger) SetFlags

func (l *Logger) SetFlags(flags int)

SetFlags sets the output flags for the logger.

func (*Logger) SetOutput

func (l *Logger) SetOutput(w io.Writer)

SetOutput sets the output destination for the logger.

func (*Logger) SetSeverity

func (l *Logger) SetSeverity(level severity.Level)

SetSeverity sets minimum severity level logged.

func (*Logger) Severity

func (l *Logger) Severity() severity.Level

Severity returns the minimum severity level logged.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL