Skip to content

Commit a63c83d

Browse files
authored
refactor and update util to use new log formatter setting (#21)
Co-authored-by: brianchennn <[email protected]>
1 parent 9004d21 commit a63c83d

File tree

21 files changed

+500
-455
lines changed

21 files changed

+500
-455
lines changed

cmd/main.go

+46-37
Original file line numberDiff line numberDiff line change
@@ -1,85 +1,94 @@
11
package main
22

33
import (
4-
"fmt"
54
"os"
65
"path/filepath"
76
"runtime/debug"
87

9-
"github.com/asaskevich/govalidator"
108
"github.com/urfave/cli"
119

1210
"github.com/free5gc/udm/internal/logger"
13-
"github.com/free5gc/udm/internal/util"
11+
"github.com/free5gc/udm/pkg/factory"
1412
"github.com/free5gc/udm/pkg/service"
13+
logger_util "github.com/free5gc/util/logger"
1514
"github.com/free5gc/util/version"
1615
)
1716

18-
var UDM = &service.UDM{}
17+
var UDM *service.UdmApp
1918

2019
func main() {
2120
defer func() {
2221
if p := recover(); p != nil {
2322
// Print stack for panic to log. Fatalf() will let program exit.
24-
logger.AppLog.Fatalf("panic: %v\n%s", p, string(debug.Stack()))
23+
logger.MainLog.Fatalf("panic: %v\n%s", p, string(debug.Stack()))
2524
}
2625
}()
2726

2827
app := cli.NewApp()
2928
app.Name = "udm"
3029
app.Usage = "5G Unified Data Management (UDM)"
3130
app.Action = action
32-
app.Flags = UDM.GetCliCmd()
31+
app.Flags = []cli.Flag{
32+
cli.StringFlag{
33+
Name: "config, c",
34+
Usage: "Load configuration from `FILE`",
35+
},
36+
cli.StringSliceFlag{
37+
Name: "log, l",
38+
Usage: "Output NF log to `FILE`",
39+
},
40+
}
41+
3342
if err := app.Run(os.Args); err != nil {
34-
fmt.Printf("UDM Run error: %v\n", err)
43+
logger.MainLog.Errorf("UDM Run error: %v\n", err)
3544
}
3645
}
3746

38-
func action(c *cli.Context) error {
39-
if err := initLogFile(c.String("log"), c.String("log5gc")); err != nil {
40-
logger.AppLog.Errorf("%+v", err)
47+
func action(cliCtx *cli.Context) error {
48+
tlsKeyLogPath, err := initLogFile(cliCtx.StringSlice("log"))
49+
if err != nil {
4150
return err
4251
}
4352

44-
if err := UDM.Initialize(c); err != nil {
45-
switch errType := err.(type) {
46-
case govalidator.Errors:
47-
validErrs := err.(govalidator.Errors).Errors()
48-
for _, validErr := range validErrs {
49-
logger.CfgLog.Errorf("%+v", validErr)
50-
}
51-
default:
52-
logger.CfgLog.Errorf("%+v", errType)
53-
}
54-
logger.CfgLog.Errorf("[-- PLEASE REFER TO SAMPLE CONFIG FILE COMMENTS --]")
55-
return fmt.Errorf("Failed to initialize !!")
56-
}
53+
logger.MainLog.Infoln("UDM version: ", version.GetVersion())
5754

58-
logger.AppLog.Infoln(c.App.Name)
59-
logger.AppLog.Infoln("UDM version: ", version.GetVersion())
55+
cfg, err := factory.ReadConfig(cliCtx.String("config"))
56+
if err != nil {
57+
return err
58+
}
59+
factory.UdmConfig = cfg
60+
udm, err := service.NewApp(cfg)
61+
if err != nil {
62+
return err
63+
}
64+
UDM = udm
6065

61-
UDM.Start()
66+
udm.Start(tlsKeyLogPath)
6267

6368
return nil
6469
}
6570

66-
func initLogFile(logNfPath, log5gcPath string) error {
67-
UDM.KeyLogPath = util.UdmDefaultKeyLogPath
71+
func initLogFile(logNfPath []string) (string, error) {
72+
logTlsKeyPath := ""
6873

69-
if err := logger.LogFileHook(logNfPath, log5gcPath); err != nil {
70-
return err
71-
}
74+
for _, path := range logNfPath {
75+
if err := logger_util.LogFileHook(logger.Log, path); err != nil {
76+
return "", err
77+
}
7278

73-
if logNfPath != "" {
74-
nfDir, _ := filepath.Split(logNfPath)
79+
if logTlsKeyPath != "" {
80+
continue
81+
}
82+
83+
nfDir, _ := filepath.Split(path)
7584
tmpDir := filepath.Join(nfDir, "key")
7685
if err := os.MkdirAll(tmpDir, 0o775); err != nil {
7786
logger.InitLog.Errorf("Make directory %s failed: %+v", tmpDir, err)
78-
return err
87+
return "", err
7988
}
80-
_, name := filepath.Split(util.UdmDefaultKeyLogPath)
81-
UDM.KeyLogPath = filepath.Join(tmpDir, name)
89+
_, name := filepath.Split(factory.UdmDefaultTLSKeyLogPath)
90+
logTlsKeyPath = filepath.Join(tmpDir, name)
8291
}
8392

84-
return nil
93+
return logTlsKeyPath, nil
8594
}

go.mod

+35-4
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,48 @@
11
module github.com/free5gc/udm
22

3-
go 1.14
3+
go 1.17
44

55
require (
66
github.com/antihax/optional v1.0.0
7-
github.com/antonfisher/nested-logrus-formatter v1.3.1
87
github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d
9-
github.com/free5gc/openapi v1.0.4
10-
github.com/free5gc/util v1.0.3
8+
github.com/free5gc/openapi v1.0.6
9+
github.com/free5gc/util v1.0.5-0.20230306071612-a52909216bd2
1110
github.com/gin-gonic/gin v1.7.7
1211
github.com/google/uuid v1.3.0
1312
github.com/sirupsen/logrus v1.8.1
1413
github.com/urfave/cli v1.22.5
1514
golang.org/x/crypto v0.1.0
1615
gopkg.in/yaml.v2 v2.4.0
1716
)
17+
18+
require (
19+
github.com/cpuguy83/go-md2man/v2 v2.0.1 // indirect
20+
github.com/gin-contrib/sse v0.1.0 // indirect
21+
github.com/go-playground/locales v0.13.0 // indirect
22+
github.com/go-playground/universal-translator v0.17.0 // indirect
23+
github.com/go-playground/validator/v10 v10.4.1 // indirect
24+
github.com/golang-jwt/jwt v3.2.1+incompatible // indirect
25+
github.com/golang/protobuf v1.5.2 // indirect
26+
github.com/google/go-cmp v0.5.6 // indirect
27+
github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542 // indirect
28+
github.com/json-iterator/go v1.1.12 // indirect
29+
github.com/kr/pretty v0.2.0 // indirect
30+
github.com/leodido/go-urn v1.2.0 // indirect
31+
github.com/mattn/go-isatty v0.0.14 // indirect
32+
github.com/mitchellh/mapstructure v1.4.3 // indirect
33+
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
34+
github.com/modern-go/reflect2 v1.0.2 // indirect
35+
github.com/pkg/errors v0.9.1 // indirect
36+
github.com/russross/blackfriday/v2 v2.1.0 // indirect
37+
github.com/stretchr/testify v1.8.0 // indirect
38+
github.com/tim-ywliu/nested-logrus-formatter v1.3.2 // indirect
39+
github.com/ugorji/go/codec v1.1.7 // indirect
40+
golang.org/x/net v0.7.0 // indirect
41+
golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8 // indirect
42+
golang.org/x/sys v0.5.0 // indirect
43+
golang.org/x/text v0.7.0 // indirect
44+
google.golang.org/appengine v1.6.7 // indirect
45+
google.golang.org/protobuf v1.27.1 // indirect
46+
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect
47+
gopkg.in/h2non/gock.v1 v1.1.2 // indirect
48+
)

0 commit comments

Comments
 (0)