make sure no leading or trailing spaces

This changed printColored and printKeyValue to print in same way
with prefix space instead of trailing space, to make it easier
to slice out when returning in Format;
The test cases are to make sure msg formartting doesn't include
leading or trailing spaces;

Closes #99

Signed-off-by: Derek Che <drc@yahoo-inc.com>
This commit is contained in:
Derek Che 2015-01-04 00:46:15 +00:00
parent a243bbaa0b
commit dcbe8d66af
2 changed files with 32 additions and 5 deletions

View File

@ -69,7 +69,7 @@ func (f *TextFormatter) Format(entry *Entry) ([]byte, error) {
}
b.WriteByte('\n')
return b.Bytes(), nil
return b.Bytes()[1:], nil
}
func printColored(b *bytes.Buffer, entry *Entry, keys []string) {
@ -85,7 +85,7 @@ func printColored(b *bytes.Buffer, entry *Entry, keys []string) {
levelText := strings.ToUpper(entry.Level.String())[0:4]
fmt.Fprintf(b, "\x1b[%dm%s\x1b[0m[%04d] %-44s ", levelColor, levelText, miniTS(), entry.Message)
fmt.Fprintf(b, " \x1b[%dm%s\x1b[0m[%04d] %-44s", levelColor, levelText, miniTS(), entry.Message)
for _, k := range keys {
v := entry.Data[k]
fmt.Fprintf(b, " \x1b[%dm%s\x1b[0m=%v", levelColor, k, v)
@ -111,12 +111,12 @@ func printKeyValue(b *bytes.Buffer, key, value interface{}) {
case error:
value = value.(error).Error()
default:
fmt.Fprintf(b, "%v=%v ", key, value)
fmt.Fprintf(b, " %v=%v", key, value)
}
if needsQuoting(value.(string)) {
fmt.Fprintf(b, "%v=%s ", key, value)
fmt.Fprintf(b, " %v=%s", key, value)
} else {
fmt.Fprintf(b, "%v=%q ", key, value)
fmt.Fprintf(b, " %v=%q", key, value)
}
}

View File

@ -31,3 +31,30 @@ func TestQuoting(t *testing.T) {
checkQuoting(false, errors.New("invalid"))
checkQuoting(true, errors.New("invalid argument"))
}
func TestTextPrint(t *testing.T) {
tf := &TextFormatter{DisableColors: true}
byts, _ := tf.Format(&Entry{Message: "msg content"})
// make sure no leading or trailing spaces
if string(byts) !=
"time=\"0001-01-01T00:00:00Z\" level=panic msg=\"msg content\"\n" {
t.Errorf("not expected: %q", string(byts))
}
}
func TestColorPrint(t *testing.T) {
tf := &TextFormatter{ForceColors: true}
entry := WithField("testkey", "value")
entry.Message = "msg content"
byts, _ := tf.Format(entry)
// make sure no leading or trailing spaces
if string(byts) !=
"\x1b[31mPANI\x1b[0m[0000] " +
// length 44 plus one space
"msg content " +
"\x1b[31mtestkey\x1b[0m=value\n" {
t.Errorf("not expected: %q", string(byts))
}
}