Skip to content

Commit f6273a8

Browse files
authored
Merge pull request #274 from netixx/netixx/implement-writeevent
Implement WriteEvent on file output so that it can be used by 'inputs' components
2 parents e248a60 + f2481c5 commit f6273a8

2 files changed

Lines changed: 58 additions & 5 deletions

File tree

outputs/file/file_output.go

Lines changed: 54 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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 //
273326
func (f *File) Close() error {

outputs/output.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -140,11 +140,11 @@ var (
140140
template.New("target-template").
141141
Funcs(TemplateFuncs).
142142
Parse(defaultTargetTemplateString))
143-
)
144143

145-
var TemplateFuncs = template.FuncMap{
146-
"host": utils.GetHost,
147-
}
144+
TemplateFuncs = template.FuncMap{
145+
"host": utils.GetHost,
146+
}
147+
)
148148

149149
const (
150150
defaultTargetTemplateString = `

0 commit comments

Comments
 (0)