logger

package module
v0.6.0 Latest Latest
Warning

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

Go to latest
Published: Feb 15, 2017 License: MIT Imports: 11 Imported by: 8

README

logger

version Build Status

Logger library in Go

Installation

Use go get:

$ go get github.com/Travix-International/logger

Usage

You can import the package, and set it up with one or more transports:

package main

import (
    "github.com/Travix-International/logger"
)

func main() {
    defaultMeta := make(map[string]string)
    myLogger, loggerErr := logger.New(defaultMeta)
    myLogger.AddTransport(logger.ConsoleTransport)

    // HTTP:
    // jsonFormat := logger.NewJSONFormat()
    // myLogger.AddTransport(logger.NewHttpTransport(myUrl, jsonFormat))

    // regular logs
    myLogger.Debug("EventName", "message...")
    myLogger.Info("EventName", "message...")
    myLogger.Warn("EventName", "message...")
    myLogger.Error("EventName", "message...")

    // with meta
    meta := map[string]string {
      "key": "value"
    })
    myLogger.DebugWithMeta("EventName", "message...", meta);
    myLogger.InfoWithMeta("EventName", "message...", meta);
    myLogger.WarnWithMeta("EventName", "message...", meta);
    myLogger.ErrorWithMeta("EventName", "message...", meta);

    // custom levels
    myLogger.Log("CustomLevelName", "EventName", "message...", map[string]string {
      "key": "value"
    })

    // Level filtering (define per transport!)
    filteredTransport := logger.NewTransport( ... )
    filteredTransport.SetFilter(logger.FilterByMinimumLevel(logger.NewLevelFilter("Warning")))
    myLogger.AddTransport(filteredTransport)
}

Development

Clone the repo to your $GOPATH:

$ git clone git@github.com:Travix-International/logger.git $GOPATH/src/github.com/Travix-International/logger

Run tests:

$ make run-tests

For generating coverage:

$ make cover

License

MIT © Travix International

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrNoLevel   = errors.New("No Level!")
	ErrNoEvent   = errors.New("No Event!")
	ErrNoMessage = errors.New("No Message!")
)
View Source
var DefaultJSONFormat = &JSONFormat{}
View Source
var DefaultStringFormat = &StringFormat{}
View Source
var ErrNilClient = errors.New("Nil HttpClient!")

Functions

This section is empty.

Types

type Entry

type Entry struct {
	Level   string
	Event   string
	Message string
	Meta    map[string]string
}

func NewEntry

func NewEntry(level string, event string, message string, meta map[string]string) *Entry

func (*Entry) String

func (e *Entry) String() string

type FilterFunc added in v0.6.0

type FilterFunc func(e *Entry) bool

func FilterAllowAll added in v0.6.0

func FilterAllowAll() FilterFunc

FilterAllowAll returns a function that will allow any entry, regardless of its contents

func FilterByMinimumLevel added in v0.6.0

func FilterByMinimumLevel(levelFilter *LevelFilter) FilterFunc

FilterByMinimumLevel only allows messages that are equal to or higher than the specified minimum level

type Formatter

type Formatter interface {
	Format(entry *Entry) (string, error)
}

type JSONFormat

type JSONFormat struct {
	// contains filtered or unexported fields
}

func NewJSONFormat

func NewJSONFormat() *JSONFormat

func (*JSONFormat) Format

func (j *JSONFormat) Format(e *Entry) (string, error)

func (*JSONFormat) SetEventKey

func (j *JSONFormat) SetEventKey(eventKey string) *JSONFormat

func (*JSONFormat) SetLevelKey

func (j *JSONFormat) SetLevelKey(levelKey string) *JSONFormat

func (*JSONFormat) SetMessageKey

func (j *JSONFormat) SetMessageKey(messageKey string) *JSONFormat

type LevelFilter added in v0.6.0

type LevelFilter struct {
	// Levels is the list of log levels, in increasing order of
	// severity. Example might be: {"Debug", "Info", "Warning", "Error"}.
	Levels []LogLevel

	// MinLevel is the minimum level allowed through
	MinLevel LogLevel
	// contains filtered or unexported fields
}

LevelFilter is used to filter out messages that don't meet the specified minimum level

Once the filter is in use somewhere, it is not safe to modify the structure.

func NewLevelFilter added in v0.6.0

func NewLevelFilter(minLevel LogLevel) *LevelFilter

NewLevelFilter creates a new filter based on the given minimum level

Note that the available levels do not need to be specified, and are set to what this library is capable of.

func (*LevelFilter) SetMinLevel added in v0.6.0

func (f *LevelFilter) SetMinLevel(min LogLevel)

SetMinLevel is used to update the minimum log level

type LogLevel added in v0.6.0

type LogLevel string

LogLevel is a string defining a specific level of log messages

type Logger

type Logger struct {
	// contains filtered or unexported fields
}

func New

func New(meta map[string]string) (*Logger, error)

func (*Logger) AddTransport

func (l *Logger) AddTransport(t ...*Transport) *Logger

func (*Logger) Debug

func (l *Logger) Debug(event string, message string) error

func (*Logger) DebugWithMeta

func (l *Logger) DebugWithMeta(event string, message string, meta map[string]string) error

func (*Logger) Error

func (l *Logger) Error(event string, message string) error

func (*Logger) ErrorWithMeta

func (l *Logger) ErrorWithMeta(event string, message string, meta map[string]string) error

func (*Logger) Info

func (l *Logger) Info(event string, message string) error

func (*Logger) InfoWithMeta

func (l *Logger) InfoWithMeta(event string, message string, meta map[string]string) error

func (*Logger) Log

func (l *Logger) Log(level string, event string, message string, meta map[string]string) error

func (*Logger) Warn

func (l *Logger) Warn(event string, message string) error

func (*Logger) WarnWithMeta

func (l *Logger) WarnWithMeta(event string, message string, meta map[string]string) error

type StringFormat

type StringFormat struct {
	// contains filtered or unexported fields
}

func NewStringFormat

func NewStringFormat(levelFormat, eventFormat, messageFormat, metaKeyFormat, metaMessageFormat, lineSuffix string) *StringFormat

func (*StringFormat) Format

func (s *StringFormat) Format(e *Entry) (out string, err error)

type Transport

type Transport struct {
	// contains filtered or unexported fields
}

func NewHttpTransport

func NewHttpTransport(url string, format Formatter) *Transport

func NewTransport

func NewTransport(w io.Writer, f Formatter) *Transport

func (*Transport) SetFilter added in v0.6.0

func (t *Transport) SetFilter(fn FilterFunc)

SetFilter chnages the message filtering to the given filter function.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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