log

package module
v0.3.1 Latest Latest
Warning

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

Go to latest
Published: May 16, 2017 License: MIT Imports: 13 Imported by: 42

README

log - aah framework

Build Status codecov Go Report Card Version GoDoc License

v0.3.1 released and tagged on May 16, 2017

Simple, flexible & powerful Go logger inspired by standard logger & Google glog. aah framework utilizes log library across.

log developed for aah framework. However, it's an independent library, can be used separately with any Go language project. Feel free to use it.

Installation

Stable - Version
# install the library
go get -u aahframework.org/log.v0

See official page [TODO]

Documentation

Overview

Package log implements a simple, flexible, non-blocking logger. It supports `console`, `file` (rotation by daily, size, lines). It also has a predefined 'standard' Logger accessible through helper functions `Error{f}`, `Warn{f}`, `Info{f}`, `Debug{f}`, `Trace{f}`, `Print{f,ln}`, `Fatal{f,ln}`, `Panic{f,ln}` which are easier to use than creating a Logger manually. Default logger writes to standard error and prints log `Entry` details as per `DefaultPattern`.

aah log package can be used as drop-in replacement for standard go logger with features.

log.Info("Welcome ", "to ", "aah ", "logger")
log.Infof("%v, %v, %v", "simple", "flexible", "non-blocking logger")

// Output:
2016-07-03 19:22:11.504 INFO  Welcome to aah logger
2016-07-03 19:22:11.504 INFO  simple, flexible, non-blocking logger

Index

Constants

This section is empty.

Variables

View Source
var (
	// Version no. of aahframework.org/log library
	Version = "0.3.1"

	// FmtFlags is the list of log format flags supported by aah/log library
	// Usage of flag order is up to format composition.
	//    level     - outputs INFO, DEBUG, ERROR, so on
	//    time      - outputs local time as per format supplied
	//    utctime   - outputs UTC time as per format supplied
	//    longfile  - outputs full file name: /a/b/c/d.go
	//    shortfile - outputs final file name element: d.go
	//    line      - outputs file line number: L23
	//    message   - outputs given message along supplied arguments if they present
	//    custom    - outputs string as-is into log entry
	FmtFlags = map[string]FmtFlag{
		"level":     FmtFlagLevel,
		"time":      FmtFlagTime,
		"utctime":   FmtFlagUTCTime,
		"longfile":  FmtFlagLongfile,
		"shortfile": FmtFlagShortfile,
		"line":      FmtFlagLine,
		"message":   FmtFlagMessage,
		"custom":    FmtFlagCustom,
	}

	// DefaultPattern is default log entry pattern in aah/log. Only applicable to
	// text formatter.
	// For e.g:
	//    2006-01-02 15:04:05.000 INFO  This is my message
	DefaultPattern = "%time:2006-01-02 15:04:05.000 %level:-5 %message"

	// BackupTimeFormat is used for timestamp with filename on rotation
	BackupTimeFormat = "2006-01-02-15-04-05.000"

	// ErrLogReceiverIsNil returned when suppiled receiver is nil.
	ErrLogReceiverIsNil = errors.New("log: receiver is nil")
)

Functions

func Debug

func Debug(v ...interface{})

Debug logs message as `DEBUG`. Arguments handled in the mananer of `fmt.Print`.

func Debugf

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

Debugf logs message as `DEBUG`. Arguments handled in the mananer of `fmt.Printf`.

func Error

func Error(v ...interface{})

Error logs message as `ERROR`. Arguments handled in the mananer of `fmt.Print`.

func Errorf

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

Errorf logs message as `ERROR`. Arguments handled in the mananer of `fmt.Printf`.

func Fatal

func Fatal(v ...interface{})

Fatal logs message as `FATAL` and call to os.Exit(1).

func Fatalf

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

Fatalf logs message as `FATAL` and call to os.Exit(1).

func Fatalln

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

Fatalln logs message as `FATAL` and call to os.Exit(1).

func Info

func Info(v ...interface{})

Info logs message as `INFO`. Arguments handled in the mananer of `fmt.Print`.

func Infof

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

Infof logs message as `INFO`. Arguments handled in the mananer of `fmt.Printf`.

func IsBufferEmpty

func IsBufferEmpty() bool

IsBufferEmpty returns true if logger buffer is empty otherwise false. This method can be used to ensure all the log entry is written successfully.

func Panic

func Panic(v ...interface{})

Panic logs message as `PANIC` and call to panic().

func Panicf

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

Panicf logs message as `PANIC` and call to panic().

func Panicln

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

Panicln logs message as `PANIC` and call to panic().

func Print

func Print(v ...interface{})

Print logs message as `INFO`. Arguments handled in the mananer of `fmt.Print`.

func Printf

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

Printf logs message as `INFO`. Arguments handled in the mananer of `fmt.Printf`.

func Println

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

Println logs message as `INFO`. Arguments handled in the mananer of `fmt.Printf`.

func SetDefaultLogger

func SetDefaultLogger(l *Logger)

SetDefaultLogger method sets the given logger instance as default logger.

func SetLevel

func SetLevel(level string) error

SetLevel method sets log level for default logger.

func SetPattern

func SetPattern(pattern string) error

SetPattern method sets the log format pattern for default logger.

func Trace

func Trace(v ...interface{})

Trace logs message as `TRACE`. Arguments handled in the mananer of `fmt.Print`.

func Tracef

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

Tracef logs message as `TRACE`. Arguments handled in the mananer of `fmt.Printf`.

func Warn

func Warn(v ...interface{})

Warn logs message as `WARN`. Arguments handled in the mananer of `fmt.Print`.

func Warnf

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

Warnf logs message as `WARN`. Arguments handled in the mananer of `fmt.Printf`.

Types

type ConsoleReceiver

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

ConsoleReceiver writes the log entry into os.Stderr. For non-windows it writes with color.

func (*ConsoleReceiver) Init

func (c *ConsoleReceiver) Init(cfg *config.Config) error

Init method initializes the console logger.

func (*ConsoleReceiver) IsCallerInfo

func (c *ConsoleReceiver) IsCallerInfo() bool

IsCallerInfo method returns true if log receiver is configured with caller info otherwise false.

func (*ConsoleReceiver) Log

func (c *ConsoleReceiver) Log(entry *Entry)

Log method writes the log entry into os.Stderr.

func (*ConsoleReceiver) SetPattern

func (c *ConsoleReceiver) SetPattern(pattern string) error

SetPattern method initializes the logger format pattern.

type DiscardReceiver

type DiscardReceiver struct {
}

DiscardReceiver is to throw the log entry.

func (*DiscardReceiver) Init

func (d *DiscardReceiver) Init(_ *config.Config) error

Init method initializes the console logger.

func (*DiscardReceiver) IsCallerInfo

func (d *DiscardReceiver) IsCallerInfo() bool

IsCallerInfo method returns true if log receiver is configured with caller info otherwise false.

func (*DiscardReceiver) Log

func (d *DiscardReceiver) Log(_ *Entry)

Log method writes the buf to

func (*DiscardReceiver) SetPattern

func (d *DiscardReceiver) SetPattern(_ string) error

SetPattern method initializes the logger format pattern.

type Entry

type Entry struct {
	Level   Level     `json:"level,omitempty"`
	Time    time.Time `json:"timestamp,omitempty"`
	Message string    `json:"message,omitempty"`
	File    string    `json:"file,omitempty"`
	Line    int       `json:"line,omitempty"`
}

Entry represents a log entry and contains the timestamp when the entry was created, level, etc.

func (*Entry) MarshalJSON

func (e *Entry) MarshalJSON() ([]byte, error)

MarshalJSON method for formating entry to JSON.

func (*Entry) Reset

func (e *Entry) Reset()

Reset method resets the `Entry` values for reuse.

type FileReceiver

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

FileReceiver writes the log entry into file.

func (*FileReceiver) Init

func (f *FileReceiver) Init(cfg *config.Config) error

Init method initializes the file receiver instance.

func (*FileReceiver) IsCallerInfo

func (f *FileReceiver) IsCallerInfo() bool

IsCallerInfo method returns true if log receiver is configured with caller info otherwise false.

func (*FileReceiver) Log

func (f *FileReceiver) Log(entry *Entry)

Log method logs the given entry values into file.

func (*FileReceiver) SetPattern

func (f *FileReceiver) SetPattern(pattern string) error

SetPattern method initializes the logger format pattern.

type FlagPart

type FlagPart struct {
	Flag   FmtFlag
	Name   string
	Format string
}

FlagPart is indiviual flag details

For e.g.:
  part := FlagPart{
    Flag:   fmtFlagTime,
    Name:   "time",
    Format: "2006-01-02 15:04:05.000",
  }

type FmtFlag

type FmtFlag uint8

FmtFlag type definition

const (
	FmtFlagLevel FmtFlag = iota
	FmtFlagTime
	FmtFlagUTCTime
	FmtFlagLongfile
	FmtFlagShortfile
	FmtFlagLine
	FmtFlagMessage
	FmtFlagCustom
	FmtFlagUnknown
)

Format flags used to define log message format for each log entry

type Level

type Level uint8

Level type definition

const (
	LevelError Level
	LevelWarn
	LevelInfo
	LevelDebug
	LevelTrace
	LevelUnknown
)

Log Level definition

type Logger

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

Logger is the object which logs the given message into recevier as per deifned format flags. Logger can be used simultaneously from multiple goroutines; it guarantees to serialize access to the Receivers.

func New

func New(cfg *config.Config) (*Logger, error)

New method creates the aah logger based on supplied `config.Config`.

func (*Logger) Debug

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

Debug logs message as `DEBUG`. Arguments handled in the mananer of `fmt.Print`.

func (*Logger) Debugf

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

Debugf logs message as `DEBUG`. Arguments handled in the mananer of `fmt.Printf`.

func (*Logger) Error

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

Error logs message as `ERROR`. Arguments handled in the mananer of `fmt.Print`.

func (*Logger) Errorf

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

Errorf logs message as `ERROR`. Arguments handled in the mananer of `fmt.Printf`.

func (*Logger) Fatal

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

Fatal logs message as `FATAL` and call to os.Exit(1).

func (*Logger) Fatalf

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

Fatalf logs message as `FATAL` and call to os.Exit(1).

func (*Logger) Fatalln

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

Fatalln logs message as `FATAL` and call to os.Exit(1).

func (*Logger) Info

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

Info logs message as `INFO`. Arguments handled in the mananer of `fmt.Print`.

func (*Logger) Infof

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

Infof logs message as `INFO`. Arguments handled in the mananer of `fmt.Printf`.

func (*Logger) IsBufferEmpty

func (l *Logger) IsBufferEmpty() bool

IsBufferEmpty returns true if logger buffer is empty otherwise false. This method can be used to ensure all the log entry is written successfully.

func (*Logger) Level

func (l *Logger) Level() string

Level method returns currently enabled logging level.

func (*Logger) Panic

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

Panic logs message as `PANIC` and call to panic().

func (*Logger) Panicf

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

Panicf logs message as `PANIC` and call to panic().

func (*Logger) Panicln

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

Panicln logs message as `PANIC` and call to panic().

func (*Logger) Print

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

Print logs message as `INFO`. Arguments handled in the mananer of `fmt.Print`.

func (*Logger) Printf

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

Printf logs message as `INFO`. Arguments handled in the mananer of `fmt.Printf`.

func (*Logger) Println

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

Println logs message as `INFO`. Arguments handled in the mananer of `fmt.Printf`.

func (*Logger) SetLevel

func (l *Logger) SetLevel(level string) error

SetLevel method sets the given logging level for the logger. For e.g.: INFO, WARN, DEBUG, etc. Case-insensitive.

func (*Logger) SetPattern

func (l *Logger) SetPattern(pattern string) error

SetPattern methods sets the log format pattern.

func (*Logger) SetReceiver

func (l *Logger) SetReceiver(receiver Receiver) error

SetReceiver sets the given receiver into logger instance.

func (*Logger) Trace

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

Trace logs message as `TRACE`. Arguments handled in the mananer of `fmt.Print`.

func (*Logger) Tracef

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

Tracef logs message as `TRACE`. Arguments handled in the mananer of `fmt.Printf`.

func (*Logger) Warn

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

Warn logs message as `WARN`. Arguments handled in the mananer of `fmt.Print`.

func (*Logger) Warnf

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

Warnf logs message as `WARN`. Arguments handled in the mananer of `fmt.Printf`.

type Receiver

type Receiver interface {
	Init(cfg *config.Config) error
	SetPattern(pattern string) error
	IsCallerInfo() bool
	Log(e *Entry)
}

Receiver is the interface for pluggable log receiver. For e.g: Console, File, HTTP, etc

Jump to

Keyboard shortcuts

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