bilog

package module
v0.1.5 Latest Latest
Warning

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

Go to latest
Published: Jan 29, 2022 License: MIT Imports: 7 Imported by: 13

README

Bilog Go Report Card GitHub GitHub

bilog被设计为可以在需要性能,简单日志的场景下可以替换std log,它关注性能与轻量的实现。

Install

go get github.com/zbh255/bilog

Usage

func main() {
	logger := bilog.NewLogger(os.Stdout, bilog.PANIC)
	logger.Debug("hello world")
	logger.Trace("hello world!")
	logger.Flush()
}

OutPut

[DEBUG] 2022-01-24 12:53:29 hello world
[TRACE] 2022-01-24 12:53:29 hello world!
Benchmark

Cpu: i7-8705G 4C/8T 的测试结果,测试用例在log_test.go

goos: darwin
goarch: amd64
pkg: github.com/zbh255/bilog
cpu: Intel(R) Core(TM) i7-8705G CPU @ 3.10GHz
BenchmarkLogger
BenchmarkLogger/BiLog
BenchmarkLogger/BiLog-8         	27178174	        40.88 ns/op	       0 B/op	       0 allocs/op
BenchmarkLogger/BiLogDouble
BenchmarkLogger/BiLogDouble-8   	16400420	        72.73 ns/op	       0 B/op	       0 allocs/op
BenchmarkLogger/StdLog
BenchmarkLogger/StdLog-8        	 4006606	       297.4 ns/op	      16 B/op	       1 allocs/op
BenchmarkLogger/StdLogDouble
BenchmarkLogger/StdLogDouble-8  	 1925840	       612.0 ns/op	      32 B/op	       2 allocs/op
PASS

Lisence

The Bilog Use Mit licensed. More is See Lisence

Documentation

Index

Constants

View Source
const (
	INFO level = iota
	DEBUG
	TRACE
	ERROR
	PANIC
)
View Source
const (
	TOP_BUFFER_SIZE = 256
	LOW_BUFFER_SIZE = TOP_BUFFER_SIZE * 6
	TIME_BUF_SIZE   = 64
	PREFIX_BUF_SIZE = 64
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Array added in v0.1.5

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

type Logger

type Logger interface {
	Level() int
	Info(s string)
	Debug(s string)
	Trace(s string)
	ErrorFromErr(e error)
	ErrorFromString(s string)
	PanicFromErr(e error)
	PanicFromString(s string)
	Flush()
}

func NewLogger

func NewLogger(write io.Writer, l level) Logger

type SimpleLogger

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

SimpleLogger atomic flag 会有公平性的问题

func (*SimpleLogger) Debug

func (l *SimpleLogger) Debug(s string)

func (*SimpleLogger) ErrorFromErr

func (l *SimpleLogger) ErrorFromErr(e error)

TODO: 优雅地处理error

func (*SimpleLogger) ErrorFromString

func (l *SimpleLogger) ErrorFromString(s string)

func (*SimpleLogger) Flush

func (l *SimpleLogger) Flush()

func (*SimpleLogger) Info

func (l *SimpleLogger) Info(s string)

func (*SimpleLogger) Level

func (l *SimpleLogger) Level() int

func (*SimpleLogger) PanicFromErr

func (l *SimpleLogger) PanicFromErr(e error)

func (*SimpleLogger) PanicFromString

func (l *SimpleLogger) PanicFromString(s string)

func (*SimpleLogger) Print

func (l *SimpleLogger) Print(s string, level level)

func (*SimpleLogger) Println

func (l *SimpleLogger) Println(s string, level level)

func (*SimpleLogger) Trace

func (l *SimpleLogger) Trace(s string)

type TimeFactory

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

func NewTimeFactory

func NewTimeFactory() *TimeFactory

func (*TimeFactory) Get

func (t *TimeFactory) Get() []byte

func (*TimeFactory) Start

func (t *TimeFactory) Start()

type TimeFactoryZero added in v0.1.5

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

func NewTimeFactoryZero added in v0.1.5

func NewTimeFactoryZero() *TimeFactoryZero

func (*TimeFactoryZero) Get added in v0.1.5

func (t *TimeFactoryZero) Get() ([32]byte, int)

func (*TimeFactoryZero) Start added in v0.1.5

func (t *TimeFactoryZero) Start()

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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