X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=src%2Flog.go;h=97a8a8fd793ef08d7777dd18813ad4022eb730bd;hb=887ea7ab9d0d957cd0b4566c28985c7d84a5832f;hp=a2e72b238f61e1a570e194d91edca8c58263c80b;hpb=35a73648e17752fb8ac56868c6f3b45c958cc130;p=nncp.git diff --git a/src/log.go b/src/log.go index a2e72b2..97a8a8f 100644 --- a/src/log.go +++ b/src/log.go @@ -42,32 +42,45 @@ type LE struct { type LEs []LE func (les LEs) Rec() string { - fields := make([]recfile.Field, 0, len(les)+1) - fields = append(fields, recfile.Field{ - Name: "When", Value: time.Now().UTC().Format(time.RFC3339Nano), - }) - var val string - for _, le := range les { - switch v := le.V.(type) { - case int, int8, uint8, int64, uint64: - val = fmt.Sprintf("%d", v) - case bool: - val = fmt.Sprintf("%v", v) - default: - val = fmt.Sprintf("%s", v) - } - fields = append(fields, recfile.Field{Name: le.K, Value: val}) - } b := bytes.NewBuffer(make([]byte, 0, 1<<10)) w := recfile.NewWriter(b) _, err := w.RecordStart() if err != nil { panic(err) } - _, err = w.WriteFields(fields...) + _, err = w.WriteFields(recfile.Field{ + Name: "When", + Value: time.Now().UTC().Format(time.RFC3339Nano), + }) if err != nil { panic(err) } + for _, le := range les { + switch v := le.V.(type) { + case int, int8, uint8, int64, uint64: + _, err = w.WriteFields(recfile.Field{ + Name: le.K, + Value: fmt.Sprintf("%d", v), + }) + case bool: + _, err = w.WriteFields(recfile.Field{ + Name: le.K, + Value: fmt.Sprintf("%v", v), + }) + case []string: + if len(v) > 0 { + _, err = w.WriteFieldMultiline(le.K, v) + } + default: + _, err = w.WriteFields(recfile.Field{ + Name: le.K, + Value: fmt.Sprintf("%s", v), + }) + } + if err != nil { + panic(err) + } + } return b.String() }