66 lines
1.1 KiB
Go
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)
|
||
|
}
|
||
|
|
||
|
}
|