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) } }