blog4go

package module
v0.5.9 Latest Latest
Warning

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

Go to latest
Published: Dec 15, 2018 License: BSD-2-Clause Imports: 13 Imported by: 9

README

Introduction

BLog4go is an efficient logging library written in the Go programming language, providing logging hook, log rotate, filtering and formatting log message.

BLog4go 是高性能日志库。创新地使用“边解析边输出”方法进行日志输出,同时支持回调函数、日志淘汰和配置文件。可以解决高并发,调用日志函数频繁的情境下,日志库造成的性能问题。

Build Status CircleCI Coverage Status Go Report Card GoDoc

Features

  • Partially write to the bufio.Writer as soon as posible while formatting message to improve performance
  • Support different logging output file for different logging level
  • Support configure with files in xml format
  • Configurable logrotate strategy
  • Call user defined hook in asynchronous mode for every logging action
  • Adjustable message formatting
  • Configurable logging behavier when logging on the fly without restarting
  • Suit configuration to the environment when logging start
  • Try best to get every done in background
  • File writer can be configured according to given config file
  • Different output writers
    • Console writer
    • File writer
    • Socket writer

Quick-start

package main

import (
	log "github.com/YoungPioneers/blog4go"
	"fmt"
	"os"
)

// optionally set user defined hook for logging
type MyHook struct {
	something string
}

// when log-level exceed level, call the hook
// level is the level associate with that logging action.
// message is the formatted string already written.
func (self *MyHook) Fire(level log.LevelType, args ...interface{}) {
	fmt.Println(args...)
}

func main() {
	// init a file write using xml config file
	// log.SetBufferSize(0) // close buffer for in time logging when debugging
	err := log.NewWriterFromConfigAsFile("config.xml")
	if nil != err {
		fmt.Println(err.Error())
		os.Exit(1)
	}
	defer log.Close()

	// initialize your hook instance
	hook := new(MyHook)
	log.SetHook(hook) // writersFromConfig can be replaced with writers
	log.SetHookLevel(log.INFO)
	log.SetHookAsync(true) // hook will be called in async mode

	// optionally set output colored
	log.SetColored(true)

	log.Debugf("Good morning, %s", "eddie")
	log.Warn("It's time to have breakfast")
}

config.xml

<blog4go minlevel="info">
	<filter levels="trace">
		<rotatefile path="trace.log" type="time"></rotatefile>
	</filter>
	<filter levels="debug,info" colored="true">
		<file path="debug.log"></file>
	</filter>
	<filter levels="error,critical">
		<rotatefile path="error.log" type="size" rotateSize="50000000" rotateLines="8000000"></rotatefile>
	</filter>
</blog4go>

Installation

If you don't have the Go development environment installed, visit the Getting Started document and follow the instructions. Once you're ready, execute the following command:

go get -u github.com/YoungPioneers/blog4go

Benchmark

I do some benchmark on a SSD disk with my macbook pro comparing amoung fmt,blog4go,seelog,logrus. Benchmark Code

BenchmarkBlog4goSingleGoroutine-4                        300000          4981 ns/op
BenchmarkBlog4goMultiGoroutine-4                           3000        554542 ns/op
BenchmarkFmtFormatSingleGoroutine-4                      300000          3727 ns/op
BenchmarkFmtFormatWithTimecacheSingleGoroutine-4         500000          2951 ns/op
BenchmarkFmtFormatWithTimecacheMultiGoroutine-4            3000        421204 ns/op
BenchmarkLogrusSingleGoroutine-4                         100000         18652 ns/op
BenchmarkLogrusWithTimecacheSingleGoroutine-4            100000         16024 ns/op
BenchmarkLogrusWithTimecacheMultiGoroutine-4                500       2238614 ns/op
BenchmarkSeelogSingleGoroutine-4                          50000         23476 ns/op
BenchmarkSeelogMultiGoroutine-4                             500       2722851 ns/op

It shows that blog4go can write log very fast, especially in situation with multi goroutines running at the same time~

Documentation

TODO

Examples

Full examples please view EXAMPLES

Changelog

CHANGELOG

Documentation

Overview

Package blog4go provide an efficient and easy-to-use writers library for logging into files, console or sockets. Writers suports formatting string filtering and calling user defined hook in asynchronous mode.

Index

Constants

View Source
const (

	// KB unit of kilobyte
	KB int64 = 1 << (10 * iota)
	// MB unit of megabyte
	MB
	// GB unit of gigabyte
	GB

	// DefaultRotateSize is default size when size base logrotate needed
	DefaultRotateSize = 500 * MB
	// DefaultRotateLines is default lines when lines base logrotate needed
	DefaultRotateLines = 2000000 // 2 million

	// DefaultLogRetentionCount is the default days of logs to be keeped
	DefaultLogRetentionCount = 7
)
View Source
const (
	// EOL end of a line
	EOL = '\n'
	// ESCAPE escape character
	ESCAPE = '\\'
	// PLACEHOLDER placeholder
	PLACEHOLDER = '%'
	// QUOTE quote character
	QUOTE = '"'
	// SPACE space character
	SPACE = ' '
)
View Source
const (
	// TypeTimeBaseRotate is time base logrotate tag
	TypeTimeBaseRotate = "time"
	// TypeSizeBaseRotate is size base logrotate tag
	TypeSizeBaseRotate = "size"
)
View Source
const (

	// TRACE trace level
	TRACE LevelType = iota
	// DEBUG debug level
	DEBUG
	// INFO info level
	INFO
	// WARNING warn level
	WARNING
	// ERROR error level
	ERROR
	// CRITICAL critical level
	CRITICAL
	// UNKNOWN unknown level
	UNKNOWN = "UNKNOWN"

	// DefaultLevel default level for writers
	DefaultLevel = TRACE

	// PrefixFormat is the level format ahead every message
	PrefixFormat = " level=\"%s\" " // pure format
	// ColoredPrefixFormat is the colored level format adhead every message
	ColoredPrefixFormat = " level=\"\x1b[%dm%s\x1b[0m\" " // colored format

	// NOCOLOR no color
	NOCOLOR = 0
	// RED red color
	RED = 31
	// GREEN green color
	GREEN = 32
	// YELLOW yellow color
	YELLOW = 33
	// BLUE blue color
	BLUE = 34
	// GRAY gray color
	GRAY = 37
)
View Source
const (
	// PrefixTimeFormat const time format prefix
	PrefixTimeFormat = "time=\"2006-01-02 15:04:05\""

	// DateFormat date format
	DateFormat = "2006-01-02"
)
View Source
const (
	// VERSION shows the current version for this package
	VERSION = "0.5.9"
)

Variables

View Source
var (

	// DefaultBufferSize bufio buffer size
	DefaultBufferSize = 4096 // default memory page size
	// ErrInvalidFormat invalid format error
	ErrInvalidFormat = errors.New("Invalid format type")
	// ErrAlreadyInit show that blog is already initialized once
	ErrAlreadyInit = errors.New("blog4go has been already initialized")
)
View Source
var (
	// ErrConfigFiltersNotFound not found filters
	ErrConfigFiltersNotFound = errors.New("Please define at least one filter")
	// ErrConfigBadAttributes wrong attribute
	ErrConfigBadAttributes = errors.New("Bad attributes setting")
	// ErrConfigLevelsNotFound not found levels
	ErrConfigLevelsNotFound = errors.New("Please define levels attribution")
	// ErrConfigFilePathNotFound not found file path
	ErrConfigFilePathNotFound = errors.New("Please define the file path")
	// ErrConfigFileRotateTypeNotFound not found rotate type
	ErrConfigFileRotateTypeNotFound = errors.New("Please define the file rotate type")
	// ErrConfigSocketAddressNotFound not found socket address
	ErrConfigSocketAddressNotFound = errors.New("Please define a socket address")
	// ErrConfigSocketNetworkNotFound not found socket port
	ErrConfigSocketNetworkNotFound = errors.New("Please define a socket network type")
)
View Source
var (
	// LevelStrings is string present for each level
	LevelStrings = [...]string{"TRACE", "DEBUG", "INFO", "WARN", "ERROR", "CRITICAL"}

	// StringLevels is map, level strings to levels
	StringLevels = map[string]LevelType{"TRACE": TRACE, "DEBUG": DEBUG, "INFO": INFO, "WARN": WARNING, "ERROR": ERROR, "CRITICAL": CRITICAL}

	// Levels is a slice consist of all levels
	Levels = [...]LevelType{TRACE, DEBUG, INFO, WARNING, ERROR, CRITICAL}

	// Prefix is preformatted level prefix string
	// help reduce string formatted burden in realtime logging
	Prefix = make(map[LevelType]string)
)
View Source
var (
	// ErrFilePathNotFound file path not found
	ErrFilePathNotFound = errors.New("File Path must be defined")
	// ErrInvalidLevel invalid level string
	ErrInvalidLevel = errors.New("Invalid level string")
	// ErrInvalidRotateType invalid logrotate type
	ErrInvalidRotateType = errors.New("Invalid log rotate type")
)

Functions

func Close

func Close()

Close close the logger

func Colored

func Colored() bool

Colored get whether it is log with colored

func Critical

func Critical(args ...interface{})

Critical static function for Critical

func Criticalf

func Criticalf(format string, args ...interface{})

Criticalf static function for Criticalf

func Debug

func Debug(args ...interface{})

Debug static function for Debug

func Debugf

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

Debugf static function for Debugf

func Error

func Error(args ...interface{})

Error static function for Error

func Errorf

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

Errorf static function for Errorf

func Flush

func Flush()

Flush flush logs to disk

func Info

func Info(args ...interface{})

Info static function for Info

func Infof

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

Infof static function for Infof

func NewBaseFileWriter

func NewBaseFileWriter(fileName string, timeRotated bool) (err error)

NewBaseFileWriter initialize a base file writer

func NewConsoleWriter

func NewConsoleWriter(redirected bool) (err error)

NewConsoleWriter initialize a console writer, singlton

func NewFileWriter

func NewFileWriter(baseDir string, rotate bool) (err error)

NewFileWriter initialize a file writer baseDir must be base directory of log files rotate determine if it will logrotate

func NewSocketWriter

func NewSocketWriter(network string, address string) (err error)

NewSocketWriter creates a socket writer, singlton

func NewWriterFromConfigAsFile

func NewWriterFromConfigAsFile(configFile string) (err error)

NewWriterFromConfigAsFile initialize a writer according to given config file configFile must be the path to the config file

func Retentions

func Retentions() int64

Retentions get retentions

func RotateLines

func RotateLines() int

RotateLines get rotateLines

func RotateSize

func RotateSize() int64

RotateSize get rotateSize

func SetBufferSize added in v0.5.9

func SetBufferSize(size int)

SetBufferSize set bufio buffer size in bytes

func SetColored

func SetColored(colored bool)

SetColored set logging color

func SetHook

func SetHook(hook Hook)

SetHook set hook for logging action

func SetHookAsync

func SetHookAsync(async bool)

SetHookAsync set whether hook is called async

func SetHookLevel

func SetHookLevel(level LevelType)

SetHookLevel set when hook will be called

func SetLevel

func SetLevel(level LevelType)

SetLevel set level for logging action

func SetRetentions

func SetRetentions(retentions int64)

SetRetentions set how many logs will keep after logrotate

func SetRotateLines

func SetRotateLines(rotateLines int)

SetRotateLines set line number when logrotate

func SetRotateSize

func SetRotateSize(rotateSize int64)

SetRotateSize set size when logroatate

func SetTags added in v0.5.9

func SetTags(tags map[string]string)

SetTags set logging tags

func SetTimeRotated

func SetTimeRotated(timeRotated bool)

SetTimeRotated toggle time base logrotate on the fly

func Tags added in v0.5.9

func Tags() map[string]string

Tags return logging tags

func TimeRotated

func TimeRotated() bool

TimeRotated get timeRotated

func Trace

func Trace(args ...interface{})

Trace static function for Trace

func Tracef

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

Tracef static function for Tracef

func Warn

func Warn(args ...interface{})

Warn static function for Warn

func Warnf

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

Warnf static function for Warnf

Types

type BLog

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

BLog struct is a threadsafe log writer inherit bufio.Writer

func NewBLog

func NewBLog(in io.Writer) (blog *BLog)

NewBLog create a BLog instance and return the pointer of it. fileName must be an absolute path to the destination log file

func (*BLog) Close

func (blog *BLog) Close()

Close close file writer

func (*BLog) In

func (blog *BLog) In() io.Writer

In return the input io.Writer

func (*BLog) Level

func (blog *BLog) Level() LevelType

Level return logging level threshold

func (*BLog) SetLevel

func (blog *BLog) SetLevel(level LevelType) *BLog

SetLevel set logging level threshold

func (*BLog) SetTags added in v0.5.9

func (blog *BLog) SetTags(tags map[string]string) *BLog

SetTags set logging tags

func (*BLog) Tags added in v0.5.9

func (blog *BLog) Tags() map[string]string

Tags return logging tags

type Config

type Config struct {
	Filters  []filter `xml:"filter"`
	MinLevel string   `xml:"minlevel,attr"`
}

Config struct define the config struct used for file wirter

type ConsoleWriter

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

ConsoleWriter is a console logger

func (*ConsoleWriter) Close

func (writer *ConsoleWriter) Close()

Close close console writer

func (*ConsoleWriter) Closed added in v0.5.9

func (writer *ConsoleWriter) Closed() bool

Closed get writer status

func (*ConsoleWriter) Colored

func (writer *ConsoleWriter) Colored() bool

Colored get Colored

func (*ConsoleWriter) Critical

func (writer *ConsoleWriter) Critical(args ...interface{})

Critical critical

func (*ConsoleWriter) Criticalf

func (writer *ConsoleWriter) Criticalf(format string, args ...interface{})

Criticalf criticalf

func (*ConsoleWriter) Debug

func (writer *ConsoleWriter) Debug(args ...interface{})

Debug debug

func (*ConsoleWriter) Debugf

func (writer *ConsoleWriter) Debugf(format string, args ...interface{})

Debugf debugf

func (*ConsoleWriter) Error

func (writer *ConsoleWriter) Error(args ...interface{})

Error error

func (*ConsoleWriter) Errorf

func (writer *ConsoleWriter) Errorf(format string, args ...interface{})

Errorf errorf

func (*ConsoleWriter) Info

func (writer *ConsoleWriter) Info(args ...interface{})

Info info

func (*ConsoleWriter) Infof

func (writer *ConsoleWriter) Infof(format string, args ...interface{})

Infof infof

func (*ConsoleWriter) Level

func (writer *ConsoleWriter) Level() LevelType

Level get level

func (*ConsoleWriter) Retentions

func (writer *ConsoleWriter) Retentions() int64

Retentions do nothing

func (*ConsoleWriter) RotateLines

func (writer *ConsoleWriter) RotateLines() int

RotateLines do nothing

func (*ConsoleWriter) RotateSize

func (writer *ConsoleWriter) RotateSize() int64

RotateSize do nothing

func (*ConsoleWriter) SetColored

func (writer *ConsoleWriter) SetColored(colored bool)

SetColored set logging color

func (*ConsoleWriter) SetHook

func (writer *ConsoleWriter) SetHook(hook Hook)

SetHook set hook for logging action

func (*ConsoleWriter) SetHookAsync

func (writer *ConsoleWriter) SetHookAsync(async bool)

SetHookAsync set hook async for base file writer

func (*ConsoleWriter) SetHookLevel

func (writer *ConsoleWriter) SetHookLevel(level LevelType)

SetHookLevel set when hook will be called

func (*ConsoleWriter) SetLevel

func (writer *ConsoleWriter) SetLevel(level LevelType)

SetLevel set logger level

func (*ConsoleWriter) SetRetentions

func (writer *ConsoleWriter) SetRetentions(retentions int64)

SetRetentions do nothing

func (*ConsoleWriter) SetRotateLines

func (writer *ConsoleWriter) SetRotateLines(rotateLines int)

SetRotateLines do nothing

func (*ConsoleWriter) SetRotateSize

func (writer *ConsoleWriter) SetRotateSize(rotateSize int64)

SetRotateSize do nothing

func (*ConsoleWriter) SetTags added in v0.5.9

func (writer *ConsoleWriter) SetTags(tags map[string]string)

SetTags set logging tags

func (*ConsoleWriter) SetTimeRotated

func (writer *ConsoleWriter) SetTimeRotated(timeRotated bool)

SetTimeRotated do nothing

func (*ConsoleWriter) Tags added in v0.5.9

func (writer *ConsoleWriter) Tags() map[string]string

Tags return logging tags

func (*ConsoleWriter) TimeRotated

func (writer *ConsoleWriter) TimeRotated() bool

TimeRotated do nothing

func (*ConsoleWriter) Trace

func (writer *ConsoleWriter) Trace(args ...interface{})

Trace trace

func (*ConsoleWriter) Tracef

func (writer *ConsoleWriter) Tracef(format string, args ...interface{})

Tracef tracef

func (*ConsoleWriter) Warn

func (writer *ConsoleWriter) Warn(args ...interface{})

Warn warn

func (*ConsoleWriter) Warnf

func (writer *ConsoleWriter) Warnf(format string, args ...interface{})

Warnf warnf

type Hook

type Hook interface {
	Fire(level LevelType, tags map[string]string, args ...interface{})
}

Hook Interface determine types of functions should be declared and implemented when user offers user defined function call before every logging action end. users may use this hook as a callback function when something happen. Fire function received two parameters. level is the level associate with that logging action. message is the formatted string already written.

type LevelType

type LevelType int

LevelType type defined for logging level just use int

func Level

func Level() LevelType

Level get log level

func LevelFromString

func LevelFromString(str string) LevelType

LevelFromString return Level according to given string

func (LevelType) String

func (level LevelType) String() string

String return string format associate with a Level instance

type MultiWriter

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

MultiWriter struct defines an instance for multi writers with different message level

func (*MultiWriter) Close

func (writer *MultiWriter) Close()

Close close file writer

func (*MultiWriter) Colored

func (writer *MultiWriter) Colored() bool

Colored get colored

func (*MultiWriter) Critical

func (writer *MultiWriter) Critical(args ...interface{})

Critical critical

func (*MultiWriter) Criticalf

func (writer *MultiWriter) Criticalf(format string, args ...interface{})

Criticalf criticalf

func (*MultiWriter) Debug

func (writer *MultiWriter) Debug(args ...interface{})

Debug debug

func (*MultiWriter) Debugf

func (writer *MultiWriter) Debugf(format string, args ...interface{})

Debugf debugf

func (*MultiWriter) Error

func (writer *MultiWriter) Error(args ...interface{})

Error error

func (*MultiWriter) Errorf

func (writer *MultiWriter) Errorf(format string, args ...interface{})

Errorf error

func (*MultiWriter) Info

func (writer *MultiWriter) Info(args ...interface{})

Info info

func (*MultiWriter) Infof

func (writer *MultiWriter) Infof(format string, args ...interface{})

Infof infof

func (*MultiWriter) Level

func (writer *MultiWriter) Level() LevelType

Level return logging level threshold

func (*MultiWriter) Retentions

func (writer *MultiWriter) Retentions() int64

Retentions get retentions

func (*MultiWriter) RotateLines

func (writer *MultiWriter) RotateLines() int

RotateLines get rotateLines

func (*MultiWriter) RotateSize

func (writer *MultiWriter) RotateSize() int64

RotateSize get rotateSize

func (*MultiWriter) SetColored

func (writer *MultiWriter) SetColored(colored bool)

SetColored set logging color

func (*MultiWriter) SetHook

func (writer *MultiWriter) SetHook(hook Hook)

SetHook set hook for every logging actions

func (*MultiWriter) SetHookAsync

func (writer *MultiWriter) SetHookAsync(async bool)

SetHookAsync set hook async for base file writer

func (*MultiWriter) SetHookLevel

func (writer *MultiWriter) SetHookLevel(level LevelType)

SetHookLevel set when hook will be called

func (*MultiWriter) SetLevel

func (writer *MultiWriter) SetLevel(level LevelType)

SetLevel set logging level threshold

func (*MultiWriter) SetRetentions

func (writer *MultiWriter) SetRetentions(retentions int64)

SetRetentions set how many logs will keep after logrotate

func (*MultiWriter) SetRotateLines

func (writer *MultiWriter) SetRotateLines(rotateLines int)

SetRotateLines set line number when logrotate

func (*MultiWriter) SetRotateSize

func (writer *MultiWriter) SetRotateSize(rotateSize int64)

SetRotateSize set size when logroatate

func (*MultiWriter) SetTags added in v0.5.9

func (writer *MultiWriter) SetTags(tags map[string]string)

SetTags set logging tags

func (*MultiWriter) SetTimeRotated

func (writer *MultiWriter) SetTimeRotated(timeRotated bool)

SetTimeRotated toggle time base logrotate

func (*MultiWriter) Tags added in v0.5.9

func (writer *MultiWriter) Tags() map[string]string

Tags return logging tags

func (*MultiWriter) TimeRotated

func (writer *MultiWriter) TimeRotated() bool

TimeRotated get timeRotated

func (*MultiWriter) Trace

func (writer *MultiWriter) Trace(args ...interface{})

Trace trace

func (*MultiWriter) Tracef

func (writer *MultiWriter) Tracef(format string, args ...interface{})

Tracef tracef

func (*MultiWriter) Warn

func (writer *MultiWriter) Warn(args ...interface{})

Warn warn

func (*MultiWriter) Warnf

func (writer *MultiWriter) Warnf(format string, args ...interface{})

Warnf warnf

type SocketWriter

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

SocketWriter is a socket logger

func (*SocketWriter) Close

func (writer *SocketWriter) Close()

Close will close the writer

func (*SocketWriter) Colored

func (writer *SocketWriter) Colored() bool

Colored do nothing

func (*SocketWriter) Critical

func (writer *SocketWriter) Critical(args ...interface{})

Critical critical

func (*SocketWriter) Criticalf

func (writer *SocketWriter) Criticalf(format string, args ...interface{})

Criticalf criticalf

func (*SocketWriter) Debug

func (writer *SocketWriter) Debug(args ...interface{})

Debug debug

func (*SocketWriter) Debugf

func (writer *SocketWriter) Debugf(format string, args ...interface{})

Debugf debugf

func (*SocketWriter) Error

func (writer *SocketWriter) Error(args ...interface{})

Error error

func (*SocketWriter) Errorf

func (writer *SocketWriter) Errorf(format string, args ...interface{})

Errorf error

func (*SocketWriter) Info

func (writer *SocketWriter) Info(args ...interface{})

Info info

func (*SocketWriter) Infof

func (writer *SocketWriter) Infof(format string, args ...interface{})

Infof infof

func (*SocketWriter) Level

func (writer *SocketWriter) Level() LevelType

Level get level

func (*SocketWriter) Retentions

func (writer *SocketWriter) Retentions() int64

Retentions do nothing

func (*SocketWriter) RotateLines

func (writer *SocketWriter) RotateLines() int

RotateLines do nothing

func (*SocketWriter) RotateSize

func (writer *SocketWriter) RotateSize() int64

RotateSize do nothing

func (*SocketWriter) SetColored

func (writer *SocketWriter) SetColored(colored bool)

SetColored do nothing

func (*SocketWriter) SetHook

func (writer *SocketWriter) SetHook(hook Hook)

SetHook set hook for logging action

func (*SocketWriter) SetHookAsync

func (writer *SocketWriter) SetHookAsync(async bool)

SetHookAsync set hook async for base file writer

func (*SocketWriter) SetHookLevel

func (writer *SocketWriter) SetHookLevel(level LevelType)

SetHookLevel set when hook will be called

func (*SocketWriter) SetLevel

func (writer *SocketWriter) SetLevel(level LevelType)

SetLevel set logger level

func (*SocketWriter) SetRetentions

func (writer *SocketWriter) SetRetentions(retentions int64)

SetRetentions do nothing

func (*SocketWriter) SetRotateLines

func (writer *SocketWriter) SetRotateLines(rotateLines int)

SetRotateLines do nothing

func (*SocketWriter) SetRotateSize

func (writer *SocketWriter) SetRotateSize(rotateSize int64)

SetRotateSize do nothing

func (*SocketWriter) SetTags added in v0.5.9

func (writer *SocketWriter) SetTags(tags map[string]string)

SetTags set logging tags

func (*SocketWriter) SetTimeRotated

func (writer *SocketWriter) SetTimeRotated(timeRotated bool)

SetTimeRotated do nothing

func (*SocketWriter) Tags added in v0.5.9

func (writer *SocketWriter) Tags() map[string]string

Tags return logging tags

func (*SocketWriter) TimeRotated

func (writer *SocketWriter) TimeRotated() bool

TimeRotated do nothing

func (*SocketWriter) Trace

func (writer *SocketWriter) Trace(args ...interface{})

Trace trace

func (*SocketWriter) Tracef

func (writer *SocketWriter) Tracef(format string, args ...interface{})

Tracef tracef

func (*SocketWriter) Warn

func (writer *SocketWriter) Warn(args ...interface{})

Warn warn

func (*SocketWriter) Warnf

func (writer *SocketWriter) Warnf(format string, args ...interface{})

Warnf warnf

type Writer

type Writer interface {
	// Close do anything end before program end
	Close()

	// SetLevel set logging level threshold
	SetLevel(level LevelType)
	// Level get log level
	Level() LevelType

	Debug(args ...interface{})
	Debugf(format string, args ...interface{})
	Trace(args ...interface{})
	Tracef(format string, args ...interface{})
	Info(args ...interface{})
	Infof(format string, args ...interface{})
	Warn(args ...interface{})
	Warnf(format string, args ...interface{})
	Error(args ...interface{})
	Errorf(format string, args ...interface{})
	Critical(args ...interface{})
	Criticalf(format string, args ...interface{})

	// hook
	SetHook(hook Hook)
	SetHookLevel(level LevelType)
	SetHookAsync(async bool)

	// logrotate
	SetTimeRotated(timeRotated bool)
	TimeRotated() bool
	SetRotateSize(rotateSize int64)
	RotateSize() int64
	SetRotateLines(rotateLines int)
	RotateLines() int
	SetRetentions(retentions int64)
	Retentions() int64
	SetColored(colored bool)
	Colored() bool

	// tags
	SetTags(tags map[string]string)
	Tags() map[string]string
	// contains filtered or unexported methods
}

Writer interface is a common definition of any writers in this package. Any struct implements Writer interface must implement functions below. Close is used for close the writer and free any elements if needed. write is an internal function that write pure message with specific logging level. writef is an internal function that formatting message with specific logging level. Placeholders in the format string will be replaced with args given. Both write and writef may have an asynchronous call of user defined function before write and writef function end..

Jump to

Keyboard shortcuts

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