77 lines
1.8 KiB
Go
77 lines
1.8 KiB
Go
package log
|
|
|
|
import (
|
|
"github.com/gin-gonic/gin"
|
|
"go.elastic.co/ecszap"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
type Logger struct {
|
|
log *zap.Logger
|
|
}
|
|
|
|
var Log *Logger
|
|
|
|
func initiateLogger() *zap.Logger {
|
|
config := zap.NewProductionConfig()
|
|
config.EncoderConfig = ecszap.ECSCompatibleEncoderConfig(config.EncoderConfig)
|
|
log, err := config.Build(ecszap.WrapCoreOption(), zap.AddCaller())
|
|
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
return log
|
|
}
|
|
|
|
func Error(message string, fields ...zap.Field) {
|
|
Log.log.Error(appendBaseMessage(message), fields...)
|
|
}
|
|
|
|
func Warn(message string, fields ...zap.Field) {
|
|
Log.log.Warn(appendBaseMessage(message), fields...)
|
|
}
|
|
|
|
func Info(message string, fields ...zap.Field) {
|
|
Log.log.Info(appendBaseMessage(message), fields...)
|
|
}
|
|
|
|
func Fatal(message string, fields ...zap.Field) {
|
|
Log.log.Fatal(appendBaseMessage(message), fields...)
|
|
}
|
|
|
|
func Panic(message string, fields ...zap.Field) {
|
|
Log.log.Panic(appendBaseMessage(message), fields...)
|
|
}
|
|
|
|
func ErrorWithContext(c *gin.Context, message string, fields ...zap.Field) {
|
|
requestLogEntryWithCorrelationId(c).Error(appendBaseMessage(message), fields...)
|
|
}
|
|
|
|
func WarnWithContext(c *gin.Context, message string, fields ...zap.Field) {
|
|
requestLogEntryWithCorrelationId(c).Warn(appendBaseMessage(message), fields...)
|
|
}
|
|
|
|
func InfoWithContext(c *gin.Context, message string, fields ...zap.Field) {
|
|
requestLogEntryWithCorrelationId(c).Info(appendBaseMessage(message), fields...)
|
|
}
|
|
|
|
func requestLogEntryWithCorrelationId(c *gin.Context) *zap.Logger {
|
|
return Log.log.With(
|
|
zap.String("CorrelationId", c.Value("X-Correlation-Id").(string)),
|
|
)
|
|
}
|
|
|
|
func appendBaseMessage(message string) string {
|
|
return "cybertron" + message
|
|
}
|
|
|
|
func (l *Logger) GetLog() *zap.Logger {
|
|
return Log.log
|
|
}
|
|
|
|
func init() {
|
|
Log = &Logger{
|
|
log: initiateLogger(),
|
|
}
|
|
}
|