2.6 KiB
2.6 KiB
Logging with color and format string
Usage
import (
"kumoly.io/lib/klog"
)
func main() {
Lklog.EVEL = Lerror | Ldebug | Lwarn | Linfo
klog.PROD = false
klog.Info("Hello, world.")
klog.Error("Error, world.")
// create sub logger
log := klog.Sub("me")
log.Warn("log with me")
// print fields
log.InfoF(klog.H{"Key":"value"}, "other ", "stuffs.")
// intercepting logs
p := log.GetPrinter()
log.SetPrinter(func(w io.Writer, d *Ldata, l *Logger) {
d.Message += " intercepted"
// NOT IN HERE
// as it will cause infinate loop
// p := log.GetPrinter()
p(w, d, l)
})
}
Test
Mem: go test -o tests/test.exe -memprofile tests/mem && go tool pprof -http : tests/mem
Cpu: go test -o tests/test.exe -cpuprofile tests/cpu && go tool pprof -http : tests/cpu
Bench
go test -bench . -run none --benchmem
v0.0.1
BenchmarkDefault-8 8512 158272 ns/op
BenchmarkSub1-8 6140 166344 ns/op
BenchmarkDefault-8 6190 189078 ns/op 19522 B/op 387 allocs/op
BenchmarkSub1-8 6222 200761 ns/op 20511 B/op 435 allocs/op
go test -bench . -run none --benchmem
test(v0.0.2)
BenchmarkDefault-8 12410 109143 ns/op
BenchmarkSub1-8 10000 113340 ns/op
BenchmarkDefault-8 12186 112974 ns/op 21944 B/op 303 allocs/op
BenchmarkSub1-8 10000 114026 ns/op 22702 B/op 363 allocs/op
v0.0.4
goos: linux
goarch: amd64
pkg: kumoly.io/lib/klog
cpu: AMD Ryzen 9 5900X 12-Core Processor
BenchmarkDefault-12 24697 47673 ns/op 21337 B/op 291 allocs/op
BenchmarkSub1-12 22639 52841 ns/op 22103 B/op 351 allocs/op
v0.0.5
go test -bench . -run none --benchmem
goos: linux
goarch: amd64
pkg: kumoly.io/lib/klog
cpu: AMD Ryzen 9 5900X 12-Core Processor
BenchmarkDefault-12 25216 47204 ns/op 20953 B/op 291 allocs/op
BenchmarkSub1-12 22789 52306 ns/op 21719 B/op 351 allocs/op
BenchmarkStackSTD-12 105280 11347 ns/op 3596 B/op 26 allocs/op
BenchmarkStackSTDStr-12 234535 5109 ns/op 2755 B/op 27 allocs/op
BenchmarkStackCust-12 14764 80228 ns/op 171553 B/op 60 allocs/op
BenchmarkStackCustStr-12 15417 78187 ns/op 171262 B/op 61 allocs/op