75 lines
1.5 KiB
Go
75 lines
1.5 KiB
Go
package main
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"os"
|
|
"strconv"
|
|
"strings"
|
|
"time"
|
|
|
|
"github.com/bdlm/log"
|
|
"github.com/satori/go.uuid"
|
|
"github.com/streadway/amqp"
|
|
|
|
srv "dev.sum7.eu/genofire/microservices-collection/logging"
|
|
)
|
|
|
|
const ServiceName = "eu.sum7.log-cmd"
|
|
|
|
var ServiceID = uuid.Must(uuid.NewV4())
|
|
|
|
func main() {
|
|
log.SetFormatter(&log.TextFormatter{
|
|
DisableTimestamp: true,
|
|
})
|
|
|
|
logLevel, err := strconv.ParseUint(os.Args[1], 10, 32)
|
|
if err != nil {
|
|
log.Fatalf("Failed to parse LogLevel: %s", err)
|
|
}
|
|
logMessage := srv.LogMessage{
|
|
ServiceName: ServiceName,
|
|
ServiceID: ServiceID,
|
|
Time: time.Now(),
|
|
Level: uint32(logLevel),
|
|
Message: strings.Join(os.Args[2:], " "),
|
|
}
|
|
body, err := json.Marshal(logMessage)
|
|
if err != nil {
|
|
log.Fatalf("Failed to parse LogLevel: %s", err)
|
|
}
|
|
|
|
conn, err := amqp.Dial("amqp://guest:guest@localhost:5672/")
|
|
if err != nil {
|
|
log.Fatalf("Failed to connect to RabbitMQ: %s", err)
|
|
}
|
|
defer conn.Close()
|
|
|
|
ch, err := conn.Channel()
|
|
if err != nil {
|
|
log.Fatalf("Failed to open a channel: %s", err)
|
|
}
|
|
defer ch.Close()
|
|
|
|
if err = srv.ExchangeDeclare(ch); err != nil {
|
|
log.Fatalf("Failed to declare an exchange: %s", err)
|
|
}
|
|
|
|
err = ch.Publish(
|
|
srv.EXCHANGE,
|
|
fmt.Sprintf("%d.%s", logLevel, ServiceName),
|
|
false,
|
|
false,
|
|
amqp.Publishing{
|
|
ContentType: "application/json",
|
|
DeliveryMode: amqp.Persistent,
|
|
Body: body,
|
|
})
|
|
if err != nil {
|
|
log.Fatalf("Failed to publish log message: %s", err)
|
|
}
|
|
|
|
log.Printf(" [x] Sent %s", body)
|
|
}
|