Categorygithub.com/no-src/log
modulepackage
0.3.2
Repository: https://github.com/no-src/log.git
Documentation: pkg.go.dev

# README

log

Build License Go Reference Go Report Card codecov Release Mentioned in Awesome Go

Installation

go get -u github.com/no-src/log

Quick Start

Current support following loggers

For example, init a console logger, to write logs.

package main

import (
	"errors"

	"github.com/no-src/log"
	"github.com/no-src/log/level"
)

func main() {
	// init console logger as default logger
	// replace the line of code with any logger you need
	log.InitDefaultLogger(log.NewConsoleLogger(level.DebugLevel))

	defer log.Close()

	text := "hello world"
	// use default logger to write logs
	log.Debug("%s, test debug log", text)
	log.Info("%s, test info log", text)
	log.Warn("%s, test warn log", text)
	log.Error(errors.New("log err"), "%s, test error log", text)
	log.ErrorIf(errors.New("log err"), "%s, test error log", text)
	log.Log("%s, test log log", text)
}

Logger

Empty Logger

Init empty logger as default logger.

log.InitDefaultLogger(log.NewEmptyLogger())

Console Logger

Init console logger as default logger.

log.InitDefaultLogger(log.NewConsoleLogger(level.DebugLevel))

File Logger

Init file logger as default logger.

if logger, err := log.NewFileLogger(level.DebugLevel, "./logs", "default_"); err == nil {
    log.InitDefaultLogger(logger)
} else {
    log.Error(err, "init file logger error")
}

Multi Logger

Init multi logger as default logger.

if logger, err := log.NewFileLogger(level.DebugLevel, "./logs", "multi_"); err == nil {
    log.InitDefaultLogger(log.NewMultiLogger(log.NewConsoleLogger(level.DebugLevel), logger))
} else {
    log.Error(err, "init file logger error")
}

Sample Logger

Init console logger as default logger and set the sample rate, default is 1.

log.InitDefaultLoggerWithSample(log.NewConsoleLogger(level.DebugLevel), 0.6)

Use default logger to write logs by random sampling.

text := "hello world"
log.DebugSample("[sample] %s, test debug log", text)
log.InfoSample("[sample] %s, test info log", text)
log.WarnSample("[sample] %s, test warn log", text)
log.ErrorSample(errors.New("log err"), "[sample] %s, test error log", text)
log.ErrorIfSample(errors.New("log err from ErrorIfSample"), "[sample] %s, test error log", text)

# Packages

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# Functions

Close close the current logger.
CreateLoggerFromConfig create a logger from config file.
Debug write the debug log.
DebugSample write the debug log by random sampling.
DefaultLogger return the global default logger.
DefaultSampleLogger return the global default sample logger.
Error write the error log.
ErrorIf write the error log if err is not nil.
ErrorIfSample write the error log by random sampling if err is not nil.
ErrorSample write the error log by random sampling.
Info write the info log.
InfoSample write the info log by random sampling.
InitDefaultLogger init a default logger if not specified, default is consoleLogger with InfoLevel, and default sample rate is 1.
InitDefaultLoggerWithSample init a default logger and sample logger if not specified, default is consoleLogger with InfoLevel, and default sample rate is 1.
Log write the log without level.
NewConsoleLogger get a console logger.
NewDefaultSampleLogger get a sample logger with custom sample rate.
NewEmptyLogger get an empty logger, there is nothing to do.
NewFileLogger get a default file logger, auto flush logs to file per 3 seconds by default.
NewFileLoggerWithAutoFlush get a file logger.
NewFileLoggerWithOption get a file logger with option.
NewMultiLogger get a multi logger, write log to multiple loggers.
NewSampleLogger get a sample logger with custom sample rate and sample function.
Warn write the warn log.
WarnSample write the warn log by random sampling.

# Interfaces

Logger define a universal log interface.
Option the log options interface.
Writer implement write to log.