bilog

package module
v0.2.5 Latest Latest
Warning

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

Go to latest
Published: Mar 17, 2022 License: MIT Imports: 8 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         	24042242	        43.53 ns/op	       0 B/op	       0 allocs/op
BenchmarkLogger/BiLogDouble
BenchmarkLogger/BiLogDouble-8   	14993350	        80.67 ns/op	       0 B/op	       0 allocs/op
BenchmarkLogger/BilogCallerAndTime
BenchmarkLogger/BilogCallerAndTime-8         	 1952274	       608.8 ns/op	     224 B/op	       3 allocs/op
BenchmarkLogger/StdLogCallerAndTime
BenchmarkLogger/StdLogCallerAndTime-8        	 1482902	       804.7 ns/op	     232 B/op	       3 allocs/op
BenchmarkLogger/StdLog
BenchmarkLogger/StdLog-8                     	 4112342	       288.9 ns/op	      16 B/op	       1 allocs/op
BenchmarkLogger/StdLogDouble
BenchmarkLogger/StdLogDouble-8               	 1974378	       604.7 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 (
	DEFAULT_TOP_BUFFER_SIZE = 256
	DEFAULT_LOW_BUFFER_SIZE = DEFAULT_TOP_BUFFER_SIZE * 6
	TIME_BUF_SIZE           = 64
	CALLER_BUF_SIZE         = 64
)

Variables

This section is empty.

Functions

func Caller added in v0.2.0

func Caller(callDepth int) (file string, line int)

Caller 输出调用函数的文件名和行号

func CallerOfCache added in v0.2.5

func CallerOfCache(skip int) (file string, line int)

func CallerOfConcurrentCache added in v0.2.5

func CallerOfConcurrentCache(skip int) (file string, line int)

Types

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()
}

type SimpleLogger

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

SimpleLogger atomic flag 会有公平性的问题

func NewLogger

func NewLogger(write io.Writer, l level, options ...options) *SimpleLogger

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) 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()

func (*TimeFactory) TimeStamp added in v0.2.5

func (t *TimeFactory) TimeStamp() int64

type WithFunc added in v0.2.0

type WithFunc func(options *loggerConfig)

func WithCaller added in v0.2.0

func WithCaller() WithFunc

func WithDefault added in v0.2.0

func WithDefault() WithFunc

func WithLowBuffer added in v0.2.5

func WithLowBuffer(nTopBuffer int8) WithFunc

WithLowBuffer 大小可已设置为 N * DEFAULT_TOP_BUFFER_SIZE nTopBuffer == N

func WithTimes added in v0.2.0

func WithTimes() WithFunc

func WithTopBuffer added in v0.2.5

func WithTopBuffer(pow int8) WithFunc

WithTopBuffer 2^pow value = 2 ^ pow

Directories

Path Synopsis
example
basic command

Jump to

Keyboard shortcuts

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