package log import ( "log/slog" "sync" "zestack.dev/color" ) var ( cError = color.New(color.FgHiRed, color.Bold) cInfo = color.New(color.FgHiGreen, color.Bold) cWarn = color.New(color.FgHiYellow, color.Bold) cDebug = color.New(color.FgHiCyan, color.Bold) // cFatal = color.New(color.FgHiBlue, color.Bold) // cPanic = color.New(color.FgHiMagenta, color.Bold) // cTrace = color.New(color.FgHiCyan, color.Bold) ) func levelToColor(l slog.Level) (*color.Value, string) { switch { case l < slog.LevelInfo: return cDebug.Wrap("DEBUG"), "" case l < slog.LevelWarn: return cInfo.Wrap("INFO"), " " case l < slog.LevelError: return cWarn.Wrap("WARN"), " " default: return cError.Wrap("ERROR"), "" } } var bufPool = sync.Pool{ New: func() any { b := make([]byte, 0, 1024) return &b }, } func allocBuf() *[]byte { return bufPool.Get().(*[]byte) } func freeBuf(b *[]byte) { // To reduce peak allocation, return only smaller buffers to the pool. const maxBufferSize = 16 << 10 if cap(*b) <= maxBufferSize { *b = (*b)[:0] bufPool.Put(b) } }