1
1
package main
2
2
3
3
import (
4
- "log"
4
+ "fmt"
5
+
5
6
"os"
6
7
"os/signal"
8
+ "runtime"
9
+ "strings"
7
10
"syscall"
11
+ "time"
8
12
9
13
"github.com/cloud-barista/cm-ant/internal/app"
10
14
"github.com/cloud-barista/cm-ant/internal/config"
11
15
"github.com/cloud-barista/cm-ant/internal/utils"
16
+ "github.com/rs/zerolog"
17
+ "github.com/rs/zerolog/log"
12
18
)
13
19
14
20
// InitRouter initializes the routing for CM-ANT API server.
@@ -17,55 +23,99 @@ import (
17
23
// @version 0.2.2
18
24
// @description CM-ANT REST API swagger document.
19
25
// @basePath /ant
26
+
27
+ type CallerHook struct {}
28
+
29
+ func (h CallerHook ) Run (e * zerolog.Event , level zerolog.Level , msg string ) {
30
+ if pc , file , line , ok := runtime .Caller (3 ); ok {
31
+ shortFile := file [strings .LastIndex (file , "/" )+ 1 :]
32
+ e .Str ("file" , fmt .Sprintf ("%s:%d" , shortFile , line ))
33
+ funcName := strings .Replace (runtime .FuncForPC (pc ).Name (), "github.com/cloud-barista/" , "" , 1 )
34
+ e .Str ("func" , funcName )
35
+ }
36
+ }
37
+
20
38
func main () {
39
+ output := zerolog.ConsoleWriter {Out : os .Stdout , TimeFormat : time .RFC3339 }
40
+ output .FormatLevel = func (i interface {}) string {
41
+ level := strings .ToUpper (fmt .Sprintf ("%s" , i ))
42
+ switch level {
43
+ case "DEBUG" :
44
+ return fmt .Sprintf ("\033 [36m| %-6s|\033 [0m" , level ) // Cyan
45
+ case "INFO" :
46
+ return fmt .Sprintf ("\033 [32m| %-6s|\033 [0m" , level ) // Green
47
+ case "WARN" :
48
+ return fmt .Sprintf ("\033 [33m| %-6s|\033 [0m" , level ) // Yellow
49
+ case "ERROR" :
50
+ return fmt .Sprintf ("\033 [31m| %-6s|\033 [0m" , level ) // Red
51
+ case "FATAL" :
52
+ return fmt .Sprintf ("\033 [35m| %-6s|\033 [0m" , level ) // Magenta
53
+ default :
54
+ return fmt .Sprintf ("| %-6s|" , level ) // Default color
55
+ }
56
+ }
57
+ output .FormatMessage = func (i interface {}) string {
58
+ if i == nil {
59
+ return ""
60
+ }
61
+ return fmt .Sprintf ("message: \033 [1m%s\033 [0m" , i )
62
+ }
63
+
64
+ output .FormatFieldName = func (i interface {}) string {
65
+ return fmt .Sprintf ("%s:" , i )
66
+ }
67
+ output .FormatFieldValue = func (i interface {}) string {
68
+ return fmt .Sprintf ("\033 [1m%s\033 [0m" , i )
69
+ }
70
+
71
+ log .Logger = zerolog .New (output ).With ().Timestamp ().Logger ().Hook (CallerHook {})
21
72
22
73
err := utils .Script (utils .JoinRootPathWith ("/script/install_required_utils.sh" ), []string {})
23
74
if err != nil {
24
- log .Fatal ("required tool can not install" )
75
+ log .Fatal (). Msg ( "required tool can not install" )
25
76
}
26
- utils .LogInfo ("Starting CM-Ant server initialization..." )
27
77
28
78
// Initialize the configuration for CM-Ant server
29
79
err = config .InitConfig ()
30
80
if err != nil {
31
- log .Fatalf ( "[ERROR] CM-Ant server config error: %v" , err )
81
+ log .Fatal (). Msgf ( " CM-Ant server config error: %v" , err )
32
82
}
33
83
34
84
// Create a new instance of the CM-Ant server
35
85
s , err := app .NewAntServer ()
36
86
if err != nil {
37
- log .Fatalf ( "[ERROR] CM-Ant server creation error: %v" , err )
87
+ log .Fatal (). Msgf ( " CM-Ant server creation error: %v" , err )
38
88
}
39
89
40
90
// Initialize the router for the CM-Ant server
41
91
err = s .InitRouter ()
42
92
if err != nil {
43
- log .Fatalf ( "[ERROR] CM-Ant server init router error: %v" , err )
93
+ log .Fatal (). Msgf ( " CM-Ant server init router error: %v" , err )
44
94
}
45
95
46
- utils . LogInfo ("CM-Ant server initialization completed successfully." )
96
+ log . Info (). Msgf ("CM-Ant server initialization completed successfully." )
47
97
48
98
// Create a channel to listen for OS signals
49
99
stop := make (chan os.Signal , 1 )
50
100
signal .Notify (stop , os .Interrupt , syscall .SIGTERM )
51
101
52
- utils . LogInfo ("Starting the CM-Ant server..." )
102
+ log . Info (). Msgf ("Starting the CM-Ant server..." )
53
103
go func () {
54
104
if err := s .Start (); err != nil {
55
- log .Fatalf ( "[ERROR] CM-Ant start server error: %v" , err )
105
+ log .Fatal (). Msgf ( " CM-Ant start server error: %v" , err )
56
106
}
57
107
}()
58
108
59
- utils . LogInfo ("CM-Ant server started successfully. Waiting for termination signal..." )
109
+ log . Info (). Msgf ("CM-Ant server started successfully. Waiting for termination signal..." )
60
110
61
111
// Wait for termination signal
62
112
<- stop
63
113
64
- utils . LogInfo ("Shutting down CM-Ant server..." )
114
+ log . Info (). Msgf ("Shutting down CM-Ant server..." )
65
115
66
116
// Perform any necessary cleanup actions here, such as closing connections or saving state.
67
117
// Optionally wait for pending operations to complete gracefully.
68
118
69
- utils . LogInfo ("CM-Ant server stopped gracefully." )
119
+ log . Info (). Msgf ("CM-Ant server stopped gracefully." )
70
120
os .Exit (0 )
71
121
}
0 commit comments