log

package module
v0.3.1 Latest Latest
Warning

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

Go to latest
Published: Sep 6, 2023 License: Apache-2.0 Imports: 17 Imported by: 43

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)

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Close

func Close() error

Close close the current logger

func Debug

func Debug(format string, args ...any)

Debug write the debug log

func DebugSample added in v0.1.3

func DebugSample(format string, args ...any)

DebugSample write the debug log by random sampling

func Error

func Error(err error, format string, args ...any)

Error write the error log

func ErrorIf added in v0.1.2

func ErrorIf(err error, format string, args ...any) error

ErrorIf write the error log if err is not nil

func ErrorIfSample added in v0.1.3

func ErrorIfSample(err error, format string, args ...any) error

ErrorIfSample write the error log by random sampling if err is not nil

func ErrorSample added in v0.1.3

func ErrorSample(err error, format string, args ...any)

ErrorSample write the error log by random sampling

func Info

func Info(format string, args ...any)

Info write the info log

func InfoSample added in v0.1.3

func InfoSample(format string, args ...any)

InfoSample write the info log by random sampling

func InitDefaultLogger

func InitDefaultLogger(logger Logger)

InitDefaultLogger init a default logger if not specified, default is consoleLogger with InfoLevel, and default sample rate is 1

func InitDefaultLoggerWithSample added in v0.1.3

func InitDefaultLoggerWithSample(logger Logger, sampleRate float64)

InitDefaultLoggerWithSample init a default logger and sample logger if not specified, default is consoleLogger with InfoLevel, and default sample rate is 1

func Log

func Log(format string, args ...any)

Log write the log without level

func Warn

func Warn(format string, args ...any)

Warn write the warn log

func WarnSample added in v0.1.3

func WarnSample(format string, args ...any)

WarnSample write the warn log by random sampling

Types

type Logger

type Logger interface {
	Writer
	Option

	// Debug write the debug log
	Debug(format string, args ...any)
	// Info write the info log
	Info(format string, args ...any)
	// Warn write the warn log
	Warn(format string, args ...any)
	// Error write the error log
	Error(err error, format string, args ...any)
	// ErrorIf write the error log if err is not nil
	ErrorIf(err error, format string, args ...any) error
}

Logger define a universal log interface

func DefaultLogger

func DefaultLogger() Logger

DefaultLogger return the global default logger

func DefaultSampleLogger added in v0.1.9

func DefaultSampleLogger() Logger

DefaultSampleLogger return the global default sample logger

func NewConsoleLogger

func NewConsoleLogger(lvl level.Level) Logger

NewConsoleLogger get a console logger

func NewDefaultSampleLogger added in v0.1.3

func NewDefaultSampleLogger(logger Logger, sampleRate float64) Logger

NewDefaultSampleLogger get a sample logger with custom sample rate

func NewEmptyLogger

func NewEmptyLogger() Logger

NewEmptyLogger get an empty logger, there is nothing to do

func NewFileLogger

func NewFileLogger(lvl level.Level, logDir string, filePrefix string) (Logger, error)

NewFileLogger get a default file logger, auto flush logs to file per 3 seconds by default

func NewFileLoggerWithAutoFlush

func NewFileLoggerWithAutoFlush(lvl level.Level, logDir string, filePrefix string, autoFlush bool, flushInterval time.Duration) (Logger, error)

NewFileLoggerWithAutoFlush get a file logger

func NewFileLoggerWithOption added in v0.1.8

func NewFileLoggerWithOption(opt option.FileLoggerOption) (Logger, error)

NewFileLoggerWithOption get a file logger with option

func NewMultiLogger

func NewMultiLogger(loggers ...Logger) Logger

NewMultiLogger get a multi logger, write log to multiple loggers

func NewSampleLogger added in v0.1.3

func NewSampleLogger(logger Logger, sampleFunc sample.SampleFunc, sampleRate float64) Logger

NewSampleLogger get a sample logger with custom sample rate and sample function

type Option added in v0.1.4

type Option interface {
	// WithFormatter set the log formatter and return logger self
	WithFormatter(f formatter.Formatter) Logger
	// WithTimeFormat set the time format and return logger self
	WithTimeFormat(f string) Logger
}

Option the log options interface

type Writer

type Writer interface {
	io.Writer

	// Log write log to output
	Log(format string, args ...any)
	// Close to close log and release dependencies
	Close() error
}

Writer implement write to log

Directories

Path Synopsis
internal

Jump to

Keyboard shortcuts

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