package starlog import ( "io" "testing" ) func newBenchmarkLogger() *StarLogger { logger := NewStarlog(io.Discard) logger.SetShowStd(false) logger.SetShowColor(false) logger.SetShowOriginFile(false) logger.SetShowFuncName(false) logger.SetShowFlag(false) return logger } func BenchmarkInfoTextFormatter(b *testing.B) { logger := newBenchmarkLogger() logger.SetFormatter(NewTextFormatter()) b.ReportAllocs() b.ResetTimer() for i := 0; i < b.N; i++ { logger.Info("bench text formatter") } } func BenchmarkInfoJSONFormatter(b *testing.B) { logger := newBenchmarkLogger() logger.SetFormatter(NewJSONFormatter()) b.ReportAllocs() b.ResetTimer() for i := 0; i < b.N; i++ { logger.WithField("idx", i).Info("bench json formatter") } } func BenchmarkWithFieldsInfo(b *testing.B) { logger := newBenchmarkLogger() fields := Fields{ "user_id": 42, "module": "auth", "ok": true, } b.ReportAllocs() b.ResetTimer() for i := 0; i < b.N; i++ { logger.WithFields(fields).Info("bench structured") } }