diff --git a/color/basic.go b/color/basic.go index b2b3ca4..99247a1 100644 --- a/color/basic.go +++ b/color/basic.go @@ -82,15 +82,9 @@ func (b *Basic) unformat() string { return fmt.Sprintf("%s[%dm", escape, Reset) } -// Format returns a string wrapped in the basic color func (b *Basic) Format(text string) string { if len(b.Attrs) > 0 { return b.wrap(text) } return text } - -// Formatf returns a formatted string wrapped in the basic color -func (b *Basic) Formatf(format string, v ...interface{}) string { - return b.Format(fmt.Sprintf(format, v...)) -} diff --git a/color/basic_colors.go b/color/basic_colors.go index f44ebcc..0a9ca24 100644 --- a/color/basic_colors.go +++ b/color/basic_colors.go @@ -47,24 +47,3 @@ const ( BgHiCyan BgHiWhite ) - -var attrCache = make(map[BasicAttribute]*Basic) - -func attr(a BasicAttribute) *Basic { - if c, ok := attrCache[a]; ok { - return c - } - c := New(a) - attrCache[a] = c - return c -} - -// Format is a quick way to format a string using a single attribute -func (a BasicAttribute) Format(text string) string { - return attr(a).Format(text) -} - -// Format is a quick way to format a formatted string using a single attribute -func (a BasicAttribute) Formatf(text string, v ...interface{}) string { - return attr(a).Formatf(text, v...) -} diff --git a/color/color.go b/color/color.go index df5d90f..2cd4e02 100644 --- a/color/color.go +++ b/color/color.go @@ -8,7 +8,6 @@ const escape = "\x1b" type Color interface { Format(text string) string - Formatf(text string, v ...interface{}) string } // ParseLevel parses a string and returns a Beaver Level's Color, defaulting to Info diff --git a/color/extended.go b/color/extended.go index a8a7798..0a08b84 100644 --- a/color/extended.go +++ b/color/extended.go @@ -43,12 +43,6 @@ func (e *Extended) unformat() string { return fmt.Sprintf("%s[%dm", escape, Reset) } -// Format returns a string wrapped in the extended color func (e *Extended) Format(text string) string { return e.wrap(text) } - -// Formatf returns a formatted string wrapped in the extended color -func (e *Extended) Formatf(text string, v ...interface{}) string { - return e.wrap(fmt.Sprintf(text, v...)) -} diff --git a/color/true.go b/color/true.go index 5601db1..3d6aa5e 100644 --- a/color/true.go +++ b/color/true.go @@ -40,12 +40,6 @@ func (t *True) unformat() string { return fmt.Sprintf("%s[%dm", escape, Reset) } -// Format returns a string wrapped in the true color func (t *True) Format(text string) string { return t.wrap(text) } - -// Formatf returns a formatted string wrapped in the true color -func (t *True) Formatf(text string, v ...interface{}) string { - return t.wrap(fmt.Sprintf(text, v...)) -} diff --git a/level.go b/level.go index 7b1004f..baf8887 100644 --- a/level.go +++ b/level.go @@ -3,6 +3,7 @@ package beaver import ( "fmt" "strings" + "time" "go.jolheiser.com/beaver/color" ) @@ -104,3 +105,38 @@ func ParseLevel(level string) Level { } return INFO } + +func timePrefix(t time.Time) string { + var buf = &[]byte{} + year, month, day := t.Date() + itoa(buf, int(month), 2) + *buf = append(*buf, '/') + itoa(buf, day, 2) + *buf = append(*buf, '/') + itoa(buf, year, 4) + *buf = append(*buf, ' ') + + hour, min, sec := t.Clock() + itoa(buf, hour, 2) + *buf = append(*buf, ':') + itoa(buf, min, 2) + *buf = append(*buf, ':') + itoa(buf, sec, 2) + + return string(*buf) +} + +func itoa(buf *[]byte, i int, wid int) { + var b [20]byte + bp := len(b) - 1 + for i >= 10 || wid > 1 { + wid-- + q := i / 10 + b[bp] = byte('0' + i - q*10) + bp-- + i = q + } + // i < 10 + b[bp] = byte('0' + i) + *buf = append(*buf, b[bp:]...) +} diff --git a/logger.go b/logger.go index 39c096d..d586d9b 100644 --- a/logger.go +++ b/logger.go @@ -42,7 +42,7 @@ func (l *Logger) write(level Level, text string) { if l.Level <= level { var message string if l.Format.TimePrefix { - message += color.Time.Format(time.Now().Format("01/02/2006 15:04:05")) + " " + message += color.Time.Format(timePrefix(time.Now())) + " " } if l.Format.StackPrefix { _, file, line, _ := runtime.Caller(l.skip)