@@ -267,7 +267,60 @@ func (f *File) Write(ctx context.Context, rsp proto.Message, meta outputs.Meta)
267267 }
268268}
269269
270- func (f * File ) WriteEvent (ctx context.Context , ev * formatters.EventMsg ) {}
270+ func (f * File ) WriteEvent (ctx context.Context , ev * formatters.EventMsg ) {
271+ select {
272+ case <- ctx .Done ():
273+ return
274+ default :
275+ }
276+ var evs = []* formatters.EventMsg {ev }
277+ for _ , proc := range f .evps {
278+ evs = proc .Apply (evs ... )
279+ }
280+ toWrite := []byte {}
281+ if f .Cfg .SplitEvents {
282+ for _ , pev := range evs {
283+ var err error
284+ var b []byte
285+ if f .Cfg .Multiline {
286+ b , err = json .MarshalIndent (pev , "" , f .Cfg .Indent )
287+ } else {
288+ b , err = json .Marshal (pev )
289+ }
290+ if err != nil {
291+ fmt .Printf ("failed to WriteEvent: %v" , err )
292+ numberOfFailWriteMsgs .WithLabelValues (f .file .Name (), "marshal_error" ).Inc ()
293+ return
294+ }
295+ toWrite = append (toWrite , b ... )
296+ toWrite = append (toWrite , []byte (f .Cfg .Separator )... )
297+ }
298+ } else {
299+ var err error
300+ var b []byte
301+ if f .Cfg .Multiline {
302+ b , err = json .MarshalIndent (evs , "" , f .Cfg .Indent )
303+ } else {
304+ b , err = json .Marshal (evs )
305+ }
306+ if err != nil {
307+ fmt .Printf ("failed to WriteEvent: %v" , err )
308+ numberOfFailWriteMsgs .WithLabelValues (f .file .Name (), "marshal_error" ).Inc ()
309+ return
310+ }
311+ toWrite = append (toWrite , b ... )
312+ toWrite = append (toWrite , []byte (f .Cfg .Separator )... )
313+ }
314+
315+ n , err := f .file .Write (toWrite )
316+ if err != nil {
317+ fmt .Printf ("failed to WriteEvent: %v" , err )
318+ numberOfFailWriteMsgs .WithLabelValues (f .file .Name (), "write_error" ).Inc ()
319+ return
320+ }
321+ numberOfWrittenBytes .WithLabelValues (f .file .Name ()).Add (float64 (n ))
322+ numberOfWrittenMsgs .WithLabelValues (f .file .Name ()).Inc ()
323+ }
271324
272325// Close //
273326func (f * File ) Close () error {
0 commit comments