log

package module
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: May 16, 2019 License: BSD-3-Clause Imports: 6 Imported by: 53

README

go-whosonfirst-log

A simple Go package to implement level-dependent logging.

Usage

Simple
import (
       "io"
       log "github.com/whosonfirst/go-whosonfirst-log"
)

loglevel := "info"
verbose := true

logfile, err := os.OpenFile("log.txt", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0660)

if err != nil {
	panic(err)
}

writer := io.MultiWriter(logfile)

if verbose {
	writer = io.MultiWriter(os.Stdout, logfile)
	loglevel = "debug"
}

logger := log.NewWOFLogger("[your-app] ")
logger.AddLogger(writer, loglevel)

logger.Info("Writing all your logs to %s", logfile)
logger.Debug("Hello world")
Fancy
import (
       "io"
       "os"
       "github.com/whosonfirst/go-whosonfirst-log"
       "github.com/whosonfirst/go-slackcat-writer"
)

func main() {

	writer := io.MultiWriter(os.Stdout)
	slack, _ := slackcat.NewWriter("~/.slackcat.conf")

	logger := log.NewWOFLogger("[your-app] ")

	logger.AddLogger(writer, "debug")
	logger.AddLogger(slack, "status")

	logger.Info("Writing all your logs to %s", "wub wub wub")
	logger.Debug("Hello world")
	logger.Status("Hello Slack")
}
Messages

You can pass regular old fmt.Sprintf formats and parameters to any of the logging methods.

Log levels

The following log levels are supported, in this order. That means if you specify that the default log level is warning any messages logged to the Status or Info or Debug methods will be ignored.

  • debug
  • info
  • status
  • warning
  • error
  • fatal

There are correspoding (public) instance methods available for each of these log levels. Invoking logger.Fatal will record the message to be logged and then call os.Exit(1).

See also

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Prefix

func Prefix(args ...string) string

Types

type MockLogger

type MockLogger struct{}

func (*MockLogger) Debug

func (m *MockLogger) Debug(...interface{})

func (*MockLogger) Error

func (m *MockLogger) Error(...interface{})

func (*MockLogger) Fatal

func (m *MockLogger) Fatal(...interface{})

func (*MockLogger) Info

func (m *MockLogger) Info(...interface{})

func (*MockLogger) Status

func (m *MockLogger) Status(...interface{})

func (*MockLogger) Warning

func (m *MockLogger) Warning(...interface{})

type WOFLog

type WOFLog interface {
	Fatal(...interface{})
	Error(...interface{})
	Warning(...interface{})
	Status(...interface{})
	Info(...interface{})
	Debug(...interface{})
}

type WOFLogger

type WOFLogger struct {
	Loggers map[string]*golog.Logger

	Prefix string
	// contains filtered or unexported fields
}

func NewWOFLogger

func NewWOFLogger(args ...string) *WOFLogger

func SimpleWOFLogger

func SimpleWOFLogger(args ...string) *WOFLogger

func (WOFLogger) AddLogger

func (l WOFLogger) AddLogger(out io.Writer, minlevel string) (bool, error)

func (WOFLogger) Debug

func (l WOFLogger) Debug(v ...interface{})

func (WOFLogger) Error

func (l WOFLogger) Error(v ...interface{})

func (WOFLogger) Fatal

func (l WOFLogger) Fatal(v ...interface{})

func (WOFLogger) Info

func (l WOFLogger) Info(v ...interface{})

func (WOFLogger) Status

func (l WOFLogger) Status(v ...interface{})

func (WOFLogger) Warning

func (l WOFLogger) Warning(v ...interface{})

Jump to

Keyboard shortcuts

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