entry: keys colored by severity

This commit is contained in:
Simon Eskildsen
2014-03-06 09:56:52 -05:00
parent 494c757ca7
commit f803b61ca1
+21 -14
View File
@@ -51,13 +51,18 @@ func (entry *Entry) Reader() (*bytes.Buffer, error) {
} }
serialized = append(serialized, '\n') serialized = append(serialized, '\n')
} else { } else {
levelText := strings.ToUpper(entry.Data["level"].(string)) levelText := strings.ToUpper(entry.Data["level"].(string))[0:4]
levelColor := 34 levelColor := 34
if levelText != "INFO" {
if entry.Data["level"] == "warning" {
levelColor = 33
} else if entry.Data["level"] == "fatal" ||
entry.Data["level"] == "panic" {
levelColor = 31 levelColor = 31
} }
if ttyutils.IsTerminal(os.Stdout.Fd()) { if ttyutils.IsTerminal(os.Stdout.Fd()) {
serialized = append(serialized, []byte(fmt.Sprintf("\x1b[%dm%s\x1b[0m[%04d] %-45s \x1b[%dm(\x1b[0m", levelColor, levelText, miniTS(), entry.Data["msg"], levelColor))...) serialized = append(serialized, []byte(fmt.Sprintf("\x1b[%dm%s\x1b[0m[%04d] %-45s ", levelColor, levelText, miniTS(), entry.Data["msg"]))...)
} }
// TODO: Pretty-print more by coloring when stdout is a tty // TODO: Pretty-print more by coloring when stdout is a tty
@@ -77,10 +82,10 @@ func (entry *Entry) Reader() (*bytes.Buffer, error) {
} else { } else {
serialized = append(serialized, ' ') serialized = append(serialized, ' ')
} }
serialized = append(serialized, []byte(fmt.Sprintf("\x1b[34m%s\x1b[0m=%v", k, v))...) serialized = append(serialized, []byte(fmt.Sprintf("\x1b[%dm%s\x1b[0m=%v", levelColor, k, v))...)
} }
serialized = append(serialized, []byte(fmt.Sprintf("\x1b[%dm)\x1b[0m", levelColor))...) // serialized = append(serialized, []byte(fmt.Sprintf("\x1b[%dm)\x1b[0m", levelColor))...)
serialized = append(serialized, '\n') serialized = append(serialized, '\n')
} }
@@ -113,15 +118,17 @@ func (entry *Entry) log(level string, msg string) string {
fmt.Fprintf(os.Stderr, "Failed to obtain reader, %v", err) fmt.Fprintf(os.Stderr, "Failed to obtain reader, %v", err)
} }
// Send HTTP request in a goroutine in warning environment to not halt the if Environment != "development" {
// main thread. It's sent before logging due to panic. // Send HTTP request in a goroutine in warning environment to not halt the
if level == "warning" { // main thread. It's sent before logging due to panic.
// TODO: new() should spawn an airbrake goroutine and this should send to if level == "warning" {
// that channel. This prevent us from spawning hundreds of goroutines in a // TODO: new() should spawn an airbrake goroutine and this should send to
// hot code path generating a warning. // that channel. This prevent us from spawning hundreds of goroutines in a
go entry.airbrake(reader.String()) // hot code path generating a warning.
} else if level == "fatal" || level == "panic" { go entry.airbrake(reader.String())
entry.airbrake(reader.String()) } else if level == "fatal" || level == "panic" {
entry.airbrake(reader.String())
}
} }
entry.logger.mu.Lock() entry.logger.mu.Lock()