From: Sergey Matveev Date: Sun, 10 Oct 2021 11:52:28 +0000 (+0300) Subject: Log handler's stdout/stderr X-Git-Tag: v8.0.0^2~7 X-Git-Url: http://www.git.cypherpunks.ru/?p=nncp.git;a=commitdiff_plain;h=887ea7ab9d0d957cd0b4566c28985c7d84a5832f Log handler's stdout/stderr --- 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() } diff --git a/src/toss.go b/src/toss.go index 4037831..8489034 100644 --- a/src/toss.go +++ b/src/toss.go @@ -157,9 +157,12 @@ func jobProcess( } else { cmd.Stdin = pipeR } - output, err := cmd.Output() + output, err := cmd.CombinedOutput() if err != nil { - ctx.LogE("rx-hande", les, err, func(les LEs) string { + les = append(les, LE{"Output", strings.Split( + strings.Trim(string(output), "\n"), "\n"), + }) + ctx.LogE("rx-handle", les, err, func(les LEs) string { return fmt.Sprintf( "Tossing exec %s/%s (%s): %s: handling", sender.Name, pktName,