a custom logging library
package main
import (
"bytes""net""github.com/rexlx/logary"
)
funcmain() {
jsonLogger, err:=logary.NewLogger(logary.Config{
Filename: "structured.json",
Structured: true,
Level: logary.DebugLevel,
MaxSizeMB: 10,
MaxBackups: 3,
})
iferr!=nil {
panic(err)
}
udpLogger:=&UDPLogger{Addr: ":5140", Log: jsonLogger}
udpLogger.receiveDataOverUDP()
}
typeUDPLoggerstruct {
Log*logary.LoggerAddrstring
}
func (u*UDPLogger) receiveDataOverUDP() {
serverAddr, err:=net.ResolveUDPAddr("udp", u.Addr)
iferr!=nil {
panic(err)
}
server, err:=net.ListenUDP("udp", serverAddr)
iferr!=nil {
panic(err)
}
deferserver.Close()
buf:=make([]byte, 1024)
for {
n, _, err:=server.ReadFromUDP(buf)
iferr!=nil {
panic(err)
}
u.writeToLog(buf[:n])
}
}
func (u*UDPLogger) writeToLog(data []byte) {
u.Log.Debugf("%s", bytes.TrimRight(data, "\n"))
}typeCustomLoggerinterface {
Debug(args...interface{})
Info(args...interface{})
Warn(args...interface{})
Error(args...interface{})
Debugf(formatstring, args...interface{})
Infof(formatstring, args...interface{})
Warnf(formatstring, args...interface{})
Errorf(formatstring, args...interface{})
}