Merge pull request #19 from meatballhat/l2met-compat

Switching non-TTY text formatter to use %q instead of '%v'
This commit is contained in:
Simon Eskildsen 2014-04-21 09:02:16 -04:00
commit c63fbfb0fd
3 changed files with 16 additions and 10 deletions

View File

@ -28,15 +28,16 @@ ocean","size":10,"time":"2014-03-10 19:57:38.562264131 -0400 EDT"}
"time":"2014-03-10 19:57:38.562543128 -0400 EDT"} "time":"2014-03-10 19:57:38.562543128 -0400 EDT"}
``` ```
With the default `log.Formatter = new(logrus.TextFormatter)` when a TTY is not With the default `log.Formatter = new(logrus.TextFormatter)` when a TTY
attached: is not attached, the output is compatible with the
[l2met](http://r.32k.io/l2met-introduction) format:
```text ```text
time='2014-03-14 13:00:31.751756799 -0400 EDT' level='info' msg='A group of walrus emerges from the ocean' animal='walrus' size=10 time="2014-04-20 15:36:23.830442383 -0400 EDT" level="info" msg="A group of walrus emerges from the ocean" animal="walrus" size=10
time='2014-03-14 13:00:31.751994265 -0400 EDT' level='warning' msg='The group's number increased tremendously!' omg=true number=122 time="2014-04-20 15:36:23.830584199 -0400 EDT" level="warning" msg="The group's number increased tremendously!" omg=true number=122
time='2014-03-14 13:00:31.752018319 -0400 EDT' level='info' msg='A giant walrus appears!' animal='walrus' size=10 time="2014-04-20 15:36:23.830596521 -0400 EDT" level="info" msg="A giant walrus appears!" animal="walrus" size=10
time='2014-03-14 13:00:31.752034139 -0400 EDT' level='info' msg='Tremendously sized cow enters the ocean.' animal='walrus' size=9 time="2014-04-20 15:36:23.830611837 -0400 EDT" level="info" msg="Tremendously sized cow enters the ocean." animal="walrus" size=9
time='2014-03-14 13:00:31.752048504 -0400 EDT' level='fatal' msg='The ice breaks!' omg=true number=100 time="2014-04-20 15:36:23.830626464 -0400 EDT" level="fatal" msg="The ice breaks!" omg=true number=100
``` ```
#### Example #### Example
@ -215,7 +216,6 @@ The built-in logging formatters are:
Third party logging formatters: Third party logging formatters:
* [`zalgo`](https://github.com/aybabtme/logzalgo): invoking the P͉̫o̳̼̊w̖͈̰͎e̬͔̭͂r͚̼̹̲ ̫͓͉̳͈ō̠͕͖̚f̝͍̠ ͕̲̞͖͑Z̖̫̤̫ͪa͉̬͈̗l͖͎g̳̥o̰̥̅!̣͔̲̻͊̄ ̙̘̦̹̦. * [`zalgo`](https://github.com/aybabtme/logzalgo): invoking the P͉̫o̳̼̊w̖͈̰͎e̬͔̭͂r͚̼̹̲ ̫͓͉̳͈ō̠͕͖̚f̝͍̠ ͕̲̞͖͑Z̖̫̤̫ͪa͉̬͈̗l͖͎g̳̥o̰̥̅!̣͔̲̻͊̄ ̙̘̦̹̦.
* [`l2met`](https://github.com/meatballhat/logrus-formatters): log in [l2met](http://r.32k.io/l2met-introduction) format.
You can define your formatter by implementing the `Formatter` interface, You can define your formatter by implementing the `Formatter` interface,
requiring a `Format` method. `Format` takes an `*Entry`. `entry.Data` is a requiring a `Format` method. `Format` takes an `*Entry`. `entry.Data` is a

View File

@ -1,12 +1,18 @@
package main package main
import ( import (
"os"
"github.com/Sirupsen/logrus" "github.com/Sirupsen/logrus"
) )
func main() { func main() {
log := logrus.New() log := logrus.New()
log.Formatter = new(logrus.JSONFormatter) if os.Getenv("LOG_FORMAT") == "json" {
log.Formatter = new(logrus.JSONFormatter)
} else {
log.Formatter = new(logrus.TextFormatter)
}
for { for {
log.WithFields(logrus.Fields{ log.WithFields(logrus.Fields{

View File

@ -74,7 +74,7 @@ func (f *TextFormatter) Format(entry *Entry) ([]byte, error) {
func (f *TextFormatter) AppendKeyValue(serialized []byte, key, value interface{}) []byte { func (f *TextFormatter) AppendKeyValue(serialized []byte, key, value interface{}) []byte {
if _, ok := value.(string); ok { if _, ok := value.(string); ok {
return append(serialized, []byte(fmt.Sprintf("%v='%v' ", key, value))...) return append(serialized, []byte(fmt.Sprintf("%v=%q ", key, value))...)
} else { } else {
return append(serialized, []byte(fmt.Sprintf("%v=%v ", key, value))...) return append(serialized, []byte(fmt.Sprintf("%v=%v ", key, value))...)
} }