Skip to content
/ bilog Public

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

License

Notifications You must be signed in to change notification settings

zbh255/bilog

Folders and files

NameName
Last commit message
Last commit date
May 8, 2022
May 7, 2022
Nov 6, 2022
Jan 20, 2022
Jan 20, 2022
Nov 6, 2022
May 8, 2022
Jan 15, 2023
Jan 15, 2023
Jan 25, 2022
Mar 17, 2022
Mar 17, 2022
Mar 17, 2022
Mar 17, 2022
Jan 15, 2023
Jan 15, 2023
Nov 6, 2022
Mar 17, 2022
May 8, 2022
May 8, 2022
May 7, 2022

Repository files navigation

Bilog Go Report Card GitHub GitHub codecov Go Doc

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

Install

go get github.com/zbh255/bilog

Quick-Start

下面的所有示例代码都可在本repoexample文件夹中找到

Print-Time

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!

Print-Caller

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

OutPut

[TRACE] 2022-05-07 23:57:27 /Users/harder/Desktop/Git-Repo/github.com/zbh255/bilog/example/basic/caller/main.go:10 hello world!
[DEBUG] 2022-05-07 23:57:27 /Users/harder/Desktop/Git-Repo/github.com/zbh255/bilog/example/basic/caller/main.go:11 hello world!

No-Buffer

bilog默认使用双重缓冲区来缓冲需要打印的bytes,您可以像上面的例子那样使用Flush强制刷新Buffer,也可以禁用缓冲,如下所示。

func main() {
	logger := bilog.NewLogger(os.Stdout,bilog.PANIC,bilog.WithDefault(),
		bilog.WithLowBuffer(0),bilog.WithTopBuffer(0))
	logger.Trace("hello world!")
	logger.Info("hello world!")
}

OutPut

[TRACE] 2022-05-08 00:35:34  hello world!
[INFO] 2022-05-08 00:35:34  hello world!

事实上,您可以禁用缓冲也可以自行调节缓冲区的大小,使用跟如上示例一样的Api

Benchmark

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

goos: darwin
goarch: amd64
pkg: github.com/zbh255/bilog/benchmark
cpu: Intel(R) Core(TM) i7-8705G CPU @ 3.10GHz
BenchmarkNoConcurrent
BenchmarkNoConcurrent/Bilog-Buffer-1000
BenchmarkNoConcurrent/Bilog-Buffer-1000-8         	   30687	     38321 ns/op	       0 B/op	       0 allocs/op
BenchmarkNoConcurrent/Bilog-Buffer-10000
BenchmarkNoConcurrent/Bilog-Buffer-10000-8        	    3160	    371820 ns/op	       1 B/op	       0 allocs/op
BenchmarkNoConcurrent/Bilog-Buffer-100000
BenchmarkNoConcurrent/Bilog-Buffer-100000-8       	     328	   3586913 ns/op	      17 B/op	       0 allocs/op
BenchmarkNoConcurrent/Bilog-Buffer-1000000
BenchmarkNoConcurrent/Bilog-Buffer-1000000-8      	      32	  35836612 ns/op	     173 B/op	       6 allocs/op
BenchmarkNoConcurrent/Bilog-NoBuffer-1000
BenchmarkNoConcurrent/Bilog-NoBuffer-1000-8       	   37311	     31553 ns/op	       0 B/op	       0 allocs/op
BenchmarkNoConcurrent/Bilog-NoBuffer-10000
BenchmarkNoConcurrent/Bilog-NoBuffer-10000-8      	    3680	    317317 ns/op	       1 B/op	       0 allocs/op
BenchmarkNoConcurrent/Bilog-NoBuffer-100000
BenchmarkNoConcurrent/Bilog-NoBuffer-100000-8     	     376	   3170883 ns/op	      15 B/op	       0 allocs/op
BenchmarkNoConcurrent/Bilog-NoBuffer-1000000
BenchmarkNoConcurrent/Bilog-NoBuffer-1000000-8    	      34	  31894623 ns/op	     156 B/op	       5 allocs/op
BenchmarkNoConcurrent/Stdlog-NoBuffer-1000
BenchmarkNoConcurrent/Stdlog-NoBuffer-1000-8      	    3900	    287960 ns/op	   16007 B/op	    1000 allocs/op
BenchmarkNoConcurrent/Stdlog-NoBuffer-10000
BenchmarkNoConcurrent/Stdlog-NoBuffer-10000-8     	     382	   2857697 ns/op	  160069 B/op	   10000 allocs/op
BenchmarkNoConcurrent/Stdlog-NoBuffer-100000
BenchmarkNoConcurrent/Stdlog-NoBuffer-100000-8    	      40	  28701547 ns/op	 1600674 B/op	  100007 allocs/op
BenchmarkNoConcurrent/Stdlog-NoBuffer-1000000
BenchmarkNoConcurrent/Stdlog-NoBuffer-1000000-8   	       4	 286931206 ns/op	16006676 B/op	 1000070 allocs/op
BenchmarkConcurrent
BenchmarkConcurrent/Bilog-Buffer-1000
BenchmarkConcurrent/Bilog-Buffer-1000-8           	    3792	    323843 ns/op	   24203 B/op	    1002 allocs/op
BenchmarkConcurrent/Bilog-Buffer-10000
BenchmarkConcurrent/Bilog-Buffer-10000-8          	     458	   2735214 ns/op	  249576 B/op	   10094 allocs/op
BenchmarkConcurrent/Bilog-Buffer-100000
BenchmarkConcurrent/Bilog-Buffer-100000-8         	      42	  28385323 ns/op	 2661977 B/op	  101717 allocs/op
BenchmarkConcurrent/Bilog-Buffer-1000000
BenchmarkConcurrent/Bilog-Buffer-1000000-8        	       4	 279774264 ns/op	25004370 B/op	 1008890 allocs/op
BenchmarkConcurrent/Bilog-NoBuffer-1000
BenchmarkConcurrent/Bilog-NoBuffer-1000-8         	    4624	    286396 ns/op	   24065 B/op	    1001 allocs/op
BenchmarkConcurrent/Bilog-NoBuffer-10000
BenchmarkConcurrent/Bilog-NoBuffer-10000-8        	     494	   2411639 ns/op	  242474 B/op	   10026 allocs/op
BenchmarkConcurrent/Bilog-NoBuffer-100000
BenchmarkConcurrent/Bilog-NoBuffer-100000-8       	      54	  23822805 ns/op	 2461564 B/op	  100645 allocs/op
BenchmarkConcurrent/Bilog-NoBuffer-1000000
BenchmarkConcurrent/Bilog-NoBuffer-1000000-8      	       5	 233709438 ns/op	24369846 B/op	 1003884 allocs/op
BenchmarkConcurrent/Stdlog-NoBuffer-1000
BenchmarkConcurrent/Stdlog-NoBuffer-1000-8        	     429	   2856284 ns/op	   40511 B/op	    2006 allocs/op
BenchmarkConcurrent/Stdlog-NoBuffer-10000
BenchmarkConcurrent/Stdlog-NoBuffer-10000-8       	      38	  27950113 ns/op	  439271 B/op	   20407 allocs/op
BenchmarkConcurrent/Stdlog-NoBuffer-100000
BenchmarkConcurrent/Stdlog-NoBuffer-100000-8      	       4	 262928956 ns/op	 6094424 B/op	  221852 allocs/op
BenchmarkConcurrent/Stdlog-NoBuffer-1000000
BenchmarkConcurrent/Stdlog-NoBuffer-1000000-8     	       1	3148452471 ns/op	420471352 B/op	 3423558 allocs/op
PASS

Lisence

The Bilog Use Mit licensed. More is See Lisence

About

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

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages