141 lines
2.8 KiB
Go
141 lines
2.8 KiB
Go
package gocnjhelper
|
|
|
|
import (
|
|
"encoding/json"
|
|
"os"
|
|
"time"
|
|
|
|
"github.com/rs/zerolog"
|
|
"github.com/rs/zerolog/log"
|
|
)
|
|
|
|
var (
|
|
logsClient *Client
|
|
gserviceName string
|
|
gserviceType string
|
|
grabbitMqLoggingEnabled bool
|
|
)
|
|
|
|
const RabbitMqQueueLogs = "cnj.logs"
|
|
|
|
func InitLogger(debug bool, colorizedOutput bool, rabbitMqLogging bool, rabbitMqConnAddr string, serviceName string, serviceType string) {
|
|
zerolog.TimeFieldFormat = zerolog.TimeFormatUnix
|
|
|
|
if debug {
|
|
zerolog.SetGlobalLevel(zerolog.DebugLevel)
|
|
} else {
|
|
zerolog.SetGlobalLevel(zerolog.InfoLevel)
|
|
}
|
|
|
|
if colorizedOutput {
|
|
log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stderr, TimeFormat: "15:04:05"})
|
|
}
|
|
|
|
grabbitMqLoggingEnabled = rabbitMqLogging
|
|
|
|
if rabbitMqLogging {
|
|
gserviceName = serviceName
|
|
gserviceType = serviceType
|
|
|
|
logsClient = NewClient(
|
|
ExchangeSettings{},
|
|
QueueSettings{
|
|
Enabled: true,
|
|
Name: RabbitMqQueueLogs,
|
|
Durable: true,
|
|
DeleteWhenUnused: false,
|
|
Exclusive: false,
|
|
NoWait: false,
|
|
Arguments: nil,
|
|
QueuePublishSettings: QueuePublishSettings{
|
|
Mandatory: false,
|
|
Immediate: false,
|
|
DeliveryMode: DeliveryModePersistent,
|
|
ContentType: ContentTypeJson,
|
|
},
|
|
},
|
|
ChannelQosSettingsDefault,
|
|
Config{
|
|
ReconnectDelay: 1 * time.Second,
|
|
ReInitDelay: 1 * time.Second,
|
|
ResendDelay: 5 * time.Second,
|
|
},
|
|
rabbitMqConnAddr)
|
|
}
|
|
|
|
LogInfof("Debug: %t", debug)
|
|
}
|
|
|
|
func LogInfo(msg string) {
|
|
log.Info().Msg(msg)
|
|
}
|
|
|
|
func LogInfof(format string, v ...interface{}) {
|
|
log.Info().Msgf(format, v)
|
|
}
|
|
|
|
func LogDebug(msg string) {
|
|
log.Debug().Msg(msg)
|
|
|
|
pushLogMessage(1, msg)
|
|
}
|
|
|
|
func LogDebugf(format string, v ...interface{}) {
|
|
log.Debug().Msgf(format, v)
|
|
}
|
|
|
|
func LogError(msg string) {
|
|
log.Error().Msg(msg)
|
|
}
|
|
|
|
func LogErrorf(format string, v ...interface{}) {
|
|
log.Error().Msgf(format, v)
|
|
}
|
|
|
|
func LogFatal(msg string) {
|
|
log.Fatal().Msg(msg)
|
|
}
|
|
|
|
func LogFatalf(format string, v ...interface{}) {
|
|
log.Fatal().Msgf(format, v)
|
|
}
|
|
|
|
type RabbitMqLogMessage struct {
|
|
MessageType uint8
|
|
ServiceName string
|
|
ServiceType string
|
|
Msg string
|
|
Timestamp int64
|
|
}
|
|
|
|
func pushLogMessage(messageType uint8, logMsg string) {
|
|
if !grabbitMqLoggingEnabled {
|
|
return
|
|
}
|
|
|
|
rabbitMqLogMessage := RabbitMqLogMessage{
|
|
MessageType: messageType,
|
|
ServiceName: gserviceName,
|
|
ServiceType: gserviceType,
|
|
Msg: logMsg,
|
|
Timestamp: time.Now().Unix(),
|
|
}
|
|
|
|
LogInfof("serviceType %s serviceName %s", gserviceType, gserviceName)
|
|
|
|
msg, err := json.Marshal(rabbitMqLogMessage)
|
|
|
|
if err != nil {
|
|
LogErrorf("Failed to marshal rabbitMqLogMessage, err: %s", err)
|
|
return
|
|
}
|
|
|
|
LogInfof("msg %s %s", msg, string(msg))
|
|
|
|
/*
|
|
if err = logsClient.PushQueueMessage(msg); err != nil {
|
|
LogErrorf("Failed to push log message, err: %s", err)
|
|
}
|
|
*/
|
|
}
|