Skip to content

Commit

Permalink
Replace logrus with zap logger (#13)
Browse files Browse the repository at this point in the history
* Replace `logrus` with `zap`

Signed-off-by: Arrobo, Gabriel <[email protected]>

* Use latest version for `aper` and `openapi` dependencies

Signed-off-by: Arrobo, Gabriel <[email protected]>

* Improve logger by disabling the `stacktrace`

Signed-off-by: Arrobo, Gabriel <[email protected]>

* Create minor release

Signed-off-by: Arrobo, Gabriel <[email protected]>

---------

Signed-off-by: Arrobo, Gabriel <[email protected]>
  • Loading branch information
gab-arrobo authored Sep 29, 2024
1 parent 3debb38 commit 99fdea3
Show file tree
Hide file tree
Showing 13 changed files with 72 additions and 65 deletions.
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.2.4-dev
1.3.0
11 changes: 5 additions & 6 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,12 @@ module github.com/omec-project/ngap
go 1.21

require (
github.com/antonfisher/nested-logrus-formatter v1.3.1
github.com/omec-project/aper v1.1.3
github.com/omec-project/openapi v1.2.0
github.com/sirupsen/logrus v1.8.1
github.com/omec-project/aper v1.2.1
github.com/omec-project/openapi v1.3.1
go.uber.org/zap v1.27.0
)

require (
github.com/golang-jwt/jwt v3.2.1+incompatible // indirect
golang.org/x/sys v0.0.0-20210423082822-04245dca01da // indirect
github.com/golang-jwt/jwt v3.2.2+incompatible // indirect
go.uber.org/multierr v1.10.0 // indirect
)
34 changes: 16 additions & 18 deletions go.sum
Original file line number Diff line number Diff line change
@@ -1,22 +1,20 @@
github.com/antonfisher/nested-logrus-formatter v1.3.1 h1:NFJIr+pzwv5QLHTPyKz9UMEoHck02Q9L0FP13b/xSbQ=
github.com/antonfisher/nested-logrus-formatter v1.3.1/go.mod h1:6WTfyWFkBc9+zyBaKIqRrg/KwMqBbodBjgbHjDz7zjA=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/golang-jwt/jwt v3.2.1+incompatible h1:73Z+4BJcrTC+KczS6WvTPvRGOp1WmfEP4Q1lOd9Z/+c=
github.com/golang-jwt/jwt v3.2.1+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
github.com/omec-project/aper v1.1.3 h1:ELtPkBmmcbtyu1BEnxUik70R3CWyW2ylBzlhBUOy3k0=
github.com/omec-project/aper v1.1.3/go.mod h1:WrF0UXIX0iYck3Fc2DZKDupd3Wip9GJkTRzcKVCHguk=
github.com/omec-project/openapi v1.2.0 h1:7Wvi0HLvhvxMyQtqGcqtMCPC/0QCGAFP5htrXCfWxRc=
github.com/omec-project/openapi v1.2.0/go.mod h1:hjU13MB1m9MHTko87JfsUNCdeD6/m6VkNZDD8Vq5U9M=
github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY=
github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
github.com/omec-project/aper v1.2.1 h1:A4KhlTMta5mUA1DX2njOjOn0SuFi5WoWnSqdbRnl9Q8=
github.com/omec-project/aper v1.2.1/go.mod h1:CbCZ0uNmcD3XA4YM6wBwpqP1PYtGAaC3RqLL4B5gG2U=
github.com/omec-project/openapi v1.3.1 h1:NCteMRdMtWnMhf1CXYduuLgeu8fEhc/7XO1CiE7fN3Y=
github.com/omec-project/openapi v1.3.1/go.mod h1:cR6Iharp2TLOzEmskQ/EdCVFZnpKh0zTvUSSuyXAYLE=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE=
github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da h1:b3NXsE2LusjYGGjL5bxEVZZORm/YEFFrWFjR8eFrw/c=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
go.uber.org/multierr v1.10.0 h1:S0h4aNzvfcFsC3dRF1jLoaov7oRaKqRGC/pUEJ2yvPQ=
go.uber.org/multierr v1.10.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
60 changes: 35 additions & 25 deletions logger/logger.go
Original file line number Diff line number Diff line change
@@ -1,46 +1,56 @@
// Copyright 2019 Communication Service/Software Laboratory, National Chiao Tung University (free5gc.org)
// SPDX-FileCopyrightText: 2024 Intel Corporation
//
// SPDX-License-Identifier: Apache-2.0

package logger

import (
"time"

formatter "github.com/antonfisher/nested-logrus-formatter"
"github.com/sirupsen/logrus"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)

var (
log *logrus.Logger
NgapLog *logrus.Entry
log *zap.Logger
NgapLog *zap.SugaredLogger
atomicLevel zap.AtomicLevel
)

func init() {
log = logrus.New()
log.SetReportCaller(false)

log.Formatter = &formatter.Formatter{
TimestampFormat: time.RFC3339,
TrimMessages: true,
NoFieldsSpace: true,
HideKeys: true,
FieldsOrder: []string{"component", "category"},
atomicLevel = zap.NewAtomicLevelAt(zap.InfoLevel)
config := zap.Config{
Level: atomicLevel,
Development: false,
Encoding: "console",
EncoderConfig: zap.NewProductionEncoderConfig(),
OutputPaths: []string{"stdout"},
ErrorOutputPaths: []string{"stderr"},
}

NgapLog = log.WithFields(logrus.Fields{"component": "LIB", "category": "NGAP"})
}
config.EncoderConfig.TimeKey = "timestamp"
config.EncoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder
config.EncoderConfig.LevelKey = "level"
config.EncoderConfig.EncodeLevel = zapcore.CapitalLevelEncoder
config.EncoderConfig.CallerKey = "caller"
config.EncoderConfig.EncodeCaller = zapcore.ShortCallerEncoder
config.EncoderConfig.MessageKey = "message"
config.EncoderConfig.StacktraceKey = ""

var err error
log, err = config.Build()
if err != nil {
panic(err)
}

func GetLogger() *logrus.Logger {
return log
NgapLog = log.Sugar().With("component", "LIB", "category", "NGAP")
}

func SetLogLevel(level logrus.Level) {
NgapLog.Infoln("set log level :", level)
log.SetLevel(level)
func GetLogger() *zap.Logger {
return log
}

func SetReportCaller(enable bool) {
NgapLog.Infoln("set report call :", enable)
log.SetReportCaller(enable)
// SetLogLevel: set the log level (panic|fatal|error|warn|info|debug)
func SetLogLevel(level zapcore.Level) {
NgapLog.Infoln("set log level:", level)
atomicLevel.SetLevel(level)
}
4 changes: 2 additions & 2 deletions ngapConvert/AmfId.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@ func AmfIdToNgap(amfId string) (regionId, setId, ptrId aper.BitString) {
setId = HexToBitString(amfId[2:5], 10)
tmpByte, err := hex.DecodeString(amfId[4:])
if err != nil {
logger.NgapLog.Warningln("AmfId From Models To NGAP Error: ", err.Error())
logger.NgapLog.Warnf("amfId From Models To NGAP Error: %v", err)
return
}
shiftByte, err := aper.GetBitString(tmpByte, 2, 6)
if err != nil {
logger.NgapLog.Warningln("AmfId From Models To NGAP Error: ", err.Error())
logger.NgapLog.Warnf("amfId From Models To NGAP Error: %v", err)
return
}
ptrId.BitLength = 6
Expand Down
4 changes: 2 additions & 2 deletions ngapConvert/BitString.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ func BitStringToHex(bitString *aper.BitString) (hexString string) {
func HexToBitString(hexString string, bitLength int) (bitString aper.BitString) {
hexLen := len(hexString)
if hexLen != (bitLength+3)/4 {
logger.NgapLog.Warningln("hexLen[", hexLen, "] doesn't match bitLength[", bitLength, "]")
logger.NgapLog.Warnf("hexLen[%d] doesn't match bitLength[%d]", hexLen, bitLength)
return
}
if hexLen%2 == 1 {
Expand All @@ -44,7 +44,7 @@ func HexToBitString(hexString string, bitLength int) (bitString aper.BitString)
func ByteToBitString(byteArray []byte, bitLength int) (bitString aper.BitString) {
byteLen := (bitLength + 7) / 8
if byteLen > len(byteArray) {
logger.NgapLog.Warningln("bitLength[", bitLength, "] is beyond byteArray size[", len(byteArray), "]")
logger.NgapLog.Warnf("bitLength[%d] is beyond byteArray size[%d]", bitLength, len(byteArray))
return
}
bitString.Bytes = byteArray
Expand Down
2 changes: 1 addition & 1 deletion ngapConvert/IpAddress.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ func IPAddressToNgap(ipv4Addr, ipv6Addr string) ngapType.TransportLayerAddress {
var ipAddr ngapType.TransportLayerAddress

if ipv4Addr == "" && ipv6Addr == "" {
logger.NgapLog.Warningln("IPAddressToNgap: Both ipv4 & ipv6 are nil string")
logger.NgapLog.Warnln("IPAddressToNgap: Both ipv4 and ipv6 are nil string")
return ipAddr
}

Expand Down
2 changes: 1 addition & 1 deletion ngapConvert/PlmnId.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ func PlmnIdToNgap(modelsPlmnid models.PlmnId) ngapType.PLMNIdentity {

var ngapPlmnId ngapType.PLMNIdentity
if plmnId, err := hex.DecodeString(hexString); err != nil {
logger.NgapLog.Warnf("Decode plmn failed: %+v", err)
logger.NgapLog.Warnf("decode plmn failed: %+v", err)
} else {
ngapPlmnId.Value = plmnId
}
Expand Down
2 changes: 1 addition & 1 deletion ngapConvert/SNssai.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ func SNssaiToNgap(modelsSnssai models.Snssai) ngapType.SNSSAI {
if modelsSnssai.Sd != "" {
ngapSnssai.SD = new(ngapType.SD)
if sdTmp, err := hex.DecodeString(modelsSnssai.Sd); err != nil {
logger.NgapLog.Warnf("Decode snssai.sd failed: %+v", err)
logger.NgapLog.Warnf("decode snssai.sd failed: %+v", err)
} else {
ngapSnssai.SD.Value = sdTmp
}
Expand Down
2 changes: 1 addition & 1 deletion ngapConvert/TAI.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ func TaiToNgap(tai models.Tai) ngapType.TAI {

ngapTai.PLMNIdentity = PlmnIdToNgap(*tai.PlmnId)
if tac, err := hex.DecodeString(tai.Tac); err != nil {
logger.NgapLog.Warnf("Decode TAC failed: %+v", err)
logger.NgapLog.Warnf("decode TAC failed: %+v", err)
} else {
ngapTai.TAC.Value = tac
}
Expand Down
2 changes: 1 addition & 1 deletion ngapConvert/TimeStamp.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ RFC 5905 Section 6 https://tools.ietf.org/html/rfc5905#section-6
*/
func TimeStampToInt32(timeStampNgap aper.OctetString) (timeStamp int32) {
if len(timeStampNgap) != 4 {
logger.NgapLog.Error("TimeStampToInt32: the size of OctetString is not 4")
logger.NgapLog.Errorln("timeStampToInt32: the size of OctetString is not 4")
}

timeStamp = int32(binary.BigEndian.Uint32(timeStampNgap))
Expand Down
10 changes: 5 additions & 5 deletions ngapConvert/TraceData.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,15 +23,15 @@ func TraceDataToNgap(traceData models.TraceData, trsr string) ngapType.TraceActi
var traceActivation ngapType.TraceActivation

if len(trsr) != 4 {
logger.NgapLog.Warningln("Trace Recording Session Reference should be 2 octets")
logger.NgapLog.Warnln("trace Recording Session Reference should be 2 octets")
return traceActivation
}

// NG-RAN Trace ID (left most 6 octet Trace Reference + last 2 octet Trace Recoding Session Reference)
subStringSlice := strings.Split(traceData.TraceRef, "-")

if len(subStringSlice) != 2 {
logger.NgapLog.Warningln("TraceRef format is not correct")
logger.NgapLog.Warnln("traceRef format is not correct")
return traceActivation
}

Expand All @@ -40,7 +40,7 @@ func TraceDataToNgap(traceData models.TraceData, trsr string) ngapType.TraceActi
plmnID.Mnc = subStringSlice[0][3:]
var traceID []byte
if traceIDTmp, err := hex.DecodeString(subStringSlice[1]); err != nil {
logger.NgapLog.Warnf("")
logger.NgapLog.Warnf("traceIDTmp is empty")
} else {
traceID = traceIDTmp
}
Expand All @@ -49,7 +49,7 @@ func TraceDataToNgap(traceData models.TraceData, trsr string) ngapType.TraceActi
traceReference := append(tmp.Value, traceID...)
var trsrNgap []byte
if trsrNgapTmp, err := hex.DecodeString(trsr); err != nil {
logger.NgapLog.Warnf("Decode trsr failed: %+v", err)
logger.NgapLog.Warnf("decode trsr failed: %+v", err)
} else {
trsrNgap = trsrNgapTmp
}
Expand All @@ -61,7 +61,7 @@ func TraceDataToNgap(traceData models.TraceData, trsr string) ngapType.TraceActi
// Interfaces To Trace
var interfacesToTrace []byte
if interfacesToTraceTmp, err := hex.DecodeString(traceData.InterfaceList); err != nil {
logger.NgapLog.Warnf("Decode Interface failed: %+v", err)
logger.NgapLog.Warnf("decode Interface failed: %+v", err)
} else {
interfacesToTrace = interfacesToTraceTmp
}
Expand Down
2 changes: 1 addition & 1 deletion ngapConvert/UEAmbr.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import (
func UEAmbrToInt64(modelAmbr string) int64 {
tok := strings.Split(modelAmbr, " ")
if ambr, err := strconv.ParseFloat(tok[0], 64); err != nil {
logger.NgapLog.Warnf("Parse AMBR failed %+v", err)
logger.NgapLog.Warnf("parse AMBR failed %+v", err)
return int64(0)
} else {
return int64(ambr * getUnit(tok[1]))
Expand Down

0 comments on commit 99fdea3

Please sign in to comment.