flsend/flsend.go
Arkadiusz Rychliński c7736b7de5 Initial version
2023-03-14 17:16:53 +01:00

66 lines
1.1 KiB
Go

package main
import (
"encoding/json"
"flag"
"fmt"
"io"
"os"
"time"
"github.com/fluent/fluent-logger-golang/fluent"
)
var (
fluentHost string
fluentPort int
tagPrefix string
tag string
msg string
)
func main() {
flag.StringVar(&fluentHost, "host", "localhost", "Fluentd address")
flag.IntVar(&fluentPort, "port", 24224, "Fluentd port")
flag.StringVar(&tagPrefix, "prefix", "flsend", "Tag preffix (application name)")
flag.StringVar(&tag, "tag", "", "Message tag (required)")
flag.Parse()
if tag == "" {
fmt.Fprintf(os.Stderr, "Error: the --tag flag is required\n\n");
flag.PrintDefaults()
os.Exit(1)
}
cfg := fluent.Config{
SubSecondPrecision: true,
FluentHost: fluentHost,
FluentPort: fluentPort,
TagPrefix: tagPrefix,
RequestAck: true,
}
msg := make(map[string]any)
bytes, err := io.ReadAll(os.Stdin)
if err != nil {
panic(err)
}
err = json.Unmarshal(bytes, &msg)
if err != nil {
panic(err)
}
logger, err := fluent.New(cfg)
if err != nil {
panic(err)
}
defer logger.Close()
err = logger.PostWithTime(tag, time.Now(), msg)
if err != nil {
panic(err)
}
}