@@ -13,7 +13,7 @@ import (
1313type 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
3737func (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
106107func init () {
0 commit comments