diff --git a/controllers/ext_client.go b/controllers/ext_client.go index 0a65be03..345e9e63 100644 --- a/controllers/ext_client.go +++ b/controllers/ext_client.go @@ -125,7 +125,7 @@ func getExtClientConf(w http.ResponseWriter, r *http.Request) { gwnode, err := logic.GetNodeByID(client.IngressGatewayID) if err != nil { - logger.Log(1, fmt.Sprintf("%s %s %s", r.Header.Get("user"), "Could not retrieve Ingress Gateway Node", client.IngressGatewayID)) + logger.Log(1, r.Header.Get("user"), "Could not retrieve Ingress Gateway Node", client.IngressGatewayID) returnErrorResponse(w, r, formatError(err, "internal")) return } diff --git a/logger/logger.go b/logger/logger.go index 986f85c4..2605b75b 100644 --- a/logger/logger.go +++ b/logger/logger.go @@ -4,44 +4,26 @@ import ( "fmt" "os" "sort" - "strconv" - "strings" "sync" "time" ) +// TimeFormatDay - format of the day for timestamps const TimeFormatDay = "2006-01-02" + +// TimeFormat - total time format const TimeFormat = "2006-01-02 15:04:05" +// == fields == var currentLogs = make(map[string]string) - -func makeString(message ...string) string { - return strings.Join(message, " ") -} - -func getVerbose() int32 { - level, err := strconv.Atoi(os.Getenv("VERBOSITY")) - if err != nil || level < 0 { - level = 0 - } - if level > 3 { - level = 3 - } - return int32(level) -} - -// ResetLogs - reallocates logs map -func ResetLogs() { - currentLogs = make(map[string]string) -} +var mu sync.Mutex // Log - handles adding logs func Log(verbosity int, message ...string) { - var mu sync.Mutex mu.Lock() defer mu.Unlock() var currentTime = time.Now() - var currentMessage = makeString(message...) + var currentMessage = MakeString(" ", message...) if int32(verbosity) <= getVerbose() && getVerbose() >= 0 { fmt.Printf("[netmaker] %s %s \n", currentTime.Format(TimeFormat), currentMessage) } @@ -74,9 +56,10 @@ func Dump() string { for i := range dumpLogs { var currLog = dumpLogs[i] - dumpString += fmt.Sprintf("[netmaker] %s %s \n", currLog.Value.Format(TimeFormat), currLog.Key) + dumpString += MakeString(" ", "[netmaker]", currLog.Value.Format(TimeFormat), currLog.Key, "\n") } + resetLogs() return dumpString } @@ -84,13 +67,14 @@ func Dump() string { func DumpFile(filePath string) { f, err := os.OpenFile(filePath, os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0600) if err != nil { - panic(err) + fmt.Println(MakeString("could not open log file", filePath)) + return } defer f.Close() if _, err = f.WriteString(Dump()); err != nil { - panic(err) + fmt.Println("could not dump logs") } } @@ -108,6 +92,13 @@ func FatalLog(message ...string) { var mu sync.Mutex mu.Lock() defer mu.Unlock() - fmt.Printf("[netmaker] Fatal: %s \n", makeString(message...)) + fmt.Printf("[netmaker] Fatal: %s \n", MakeString(" ", message...)) os.Exit(2) } + +// == private == + +// resetLogs - reallocates logs map +func resetLogs() { + currentLogs = make(map[string]string) +} diff --git a/logger/util.go b/logger/util.go new file mode 100644 index 00000000..7c240461 --- /dev/null +++ b/logger/util.go @@ -0,0 +1,30 @@ +package logger + +import ( + "os" + "strconv" + "strings" +) + +// MakeString - makes a string using golang string builder +func MakeString(delimeter string, message ...string) string { + var builder strings.Builder + for i := 0; i < len(message); i++ { + builder.WriteString(message[i]) + if delimeter != "" && i != len(message)-1 { + builder.WriteString(delimeter) + } + } + return builder.String() +} + +func getVerbose() int32 { + level, err := strconv.Atoi(os.Getenv("VERBOSITY")) + if err != nil || level < 0 { + level = 0 + } + if level > 3 { + level = 3 + } + return int32(level) +} diff --git a/main.go b/main.go index bf847a5d..2f31377b 100644 --- a/main.go +++ b/main.go @@ -187,7 +187,7 @@ func runGRPC(wg *sync.WaitGroup) { // Should we be using a context vice a waitgroup???????????? func runMessageQueue(wg *sync.WaitGroup) { defer wg.Done() - logger.Log(0, fmt.Sprintf("connecting to mq broker at %s", servercfg.GetMessageQueueEndpoint())) + logger.Log(0, "connecting to mq broker at", servercfg.GetMessageQueueEndpoint()) var client = mq.SetupMQTT(false) // Set up the subscription listener ctx, cancel := context.WithCancel(context.Background()) go mq.Keepalive(ctx) diff --git a/mq/mq.go b/mq/mq.go index be79ca34..cd92c058 100644 --- a/mq/mq.go +++ b/mq/mq.go @@ -129,7 +129,7 @@ func PublishPeerUpdate(newNode *models.Node) error { if err = publish(&node, fmt.Sprintf("peers/%s/%s", node.Network, node.ID), data); err != nil { logger.Log(1, "failed to publish peer update for node", node.ID) } else { - logger.Log(1, fmt.Sprintf("sent peer update for node %s on network: %s ", node.Name, node.Network)) + logger.Log(1, "sent peer update for node", node.Name, "on network:", node.Network) } } return nil diff --git a/serverctl/serverctl.go b/serverctl/serverctl.go index 3d5424ba..e7c10a32 100644 --- a/serverctl/serverctl.go +++ b/serverctl/serverctl.go @@ -2,7 +2,6 @@ package serverctl import ( "errors" - "fmt" "net" "os" "strings" @@ -34,9 +33,7 @@ func InitServerNetclient() error { var currentServerNode, nodeErr = logic.GetNetworkServerLocal(network.NetID) if nodeErr == nil { if err = logic.ServerPull(¤tServerNode, true); err != nil { - logger.Log(1, fmt.Sprintf("failed pull for network %s, on server node %s", - network.NetID, - currentServerNode.ID)) + logger.Log(1, "failed pull for network", network.NetID, ", on server node", currentServerNode.ID) } } }