Skip to content

Commit d7e0c3f

Browse files
danielnelsonotherpirate
authored andcommitted
Ignore writer error in file output (influxdata#4055)
1 parent 774ea7b commit d7e0c3f

File tree

1 file changed

+11
-10
lines changed

1 file changed

+11
-10
lines changed

plugins/outputs/file/file.go

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import (
1313
type File struct {
1414
Files []string
1515

16-
writer io.Writer
16+
writers []io.Writer
1717
closers []io.Closer
1818

1919
serializer serializers.Serializer
@@ -35,15 +35,13 @@ func (f *File) SetSerializer(serializer serializers.Serializer) {
3535
}
3636

3737
func (f *File) Connect() error {
38-
writers := []io.Writer{}
39-
4038
if len(f.Files) == 0 {
4139
f.Files = []string{"stdout"}
4240
}
4341

4442
for _, file := range f.Files {
4543
if file == "stdout" {
46-
writers = append(writers, os.Stdout)
44+
f.writers = append(f.writers, os.Stdout)
4745
} else {
4846
var of *os.File
4947
var err error
@@ -56,11 +54,10 @@ func (f *File) Connect() error {
5654
if err != nil {
5755
return err
5856
}
59-
writers = append(writers, of)
57+
f.writers = append(f.writers, of)
6058
f.closers = append(f.closers, of)
6159
}
6260
}
63-
f.writer = io.MultiWriter(writers...)
6461
return nil
6562
}
6663

@@ -90,17 +87,21 @@ func (f *File) Write(metrics []telegraf.Metric) error {
9087
return nil
9188
}
9289

90+
var writeErr error = nil
9391
for _, metric := range metrics {
9492
b, err := f.serializer.Serialize(metric)
9593
if err != nil {
9694
return fmt.Errorf("failed to serialize message: %s", err)
9795
}
98-
_, err = f.writer.Write(b)
99-
if err != nil {
100-
return fmt.Errorf("failed to write message: %s, %s", b, err)
96+
97+
for _, writer := range f.writers {
98+
_, err = writer.Write(b)
99+
if err != nil && writer != os.Stdout {
100+
writeErr = fmt.Errorf("E! failed to write message: %s, %s", b, err)
101+
}
101102
}
102103
}
103-
return nil
104+
return writeErr
104105
}
105106

106107
func init() {

0 commit comments

Comments
 (0)