feat: implement centralized logging helper

- remove direct log usage
- create a new logging helper
- update all log calls to use the new Logger instance
- set timestamp to ISO8601

🤖
This commit is contained in:
Sebastian Mark 2024-11-04 20:33:25 +01:00
parent 76f3954299
commit 600d2ed2ff
6 changed files with 30 additions and 17 deletions

View file

@ -0,0 +1,12 @@
package helper
import (
"github.com/charmbracelet/log"
"os"
"time"
)
var Logger = log.NewWithOptions(os.Stdout, log.Options{
ReportTimestamp: true,
TimeFormat: time.RFC3339,
})

View file

@ -2,10 +2,10 @@ package websocket
import (
"encoding/json"
"github.com/charmbracelet/log"
"github.com/gorilla/websocket"
"time"
"git.smsvc.net/pomodoro/GoTomato/internal/helper"
"git.smsvc.net/pomodoro/GoTomato/internal/shared"
)
@ -16,14 +16,14 @@ func SendPermanentBroadCastMessage() {
// Marshal the message into JSON format
jsonMessage, err := json.Marshal(shared.State)
if err != nil {
log.Error("Error marshalling message:", "msg", err)
helper.Logger.Error("Error marshalling message:", "msg", err)
return
}
// Iterate over all connected clients and broadcast the message
for _, client := range Clients {
err := client.SendMessage(websocket.TextMessage, jsonMessage)
if err != nil {
log.Error("Error broadcasting to client:", "msg", err)
helper.Logger.Error("Error broadcasting to client:", "msg", err)
// The client is responsible for closing itself on error
}
}

View file

@ -2,8 +2,8 @@ package websocket
import (
"encoding/json"
"github.com/charmbracelet/log"
"git.smsvc.net/pomodoro/GoTomato/internal/helper"
"git.smsvc.net/pomodoro/GoTomato/internal/pomodoro"
"git.smsvc.net/pomodoro/GoTomato/internal/shared"
"git.smsvc.net/pomodoro/GoTomato/pkg/models"
@ -22,14 +22,14 @@ func handleClientCommands(c models.WebsocketClient) {
_, message, err := ws.ReadMessage()
if err != nil {
delete(Clients, ws.LocalAddr())
log.Info("Client disconnected:", "msg", err, "host", c.RealIP, "clients", len(Clients))
helper.Logger.Info("Client disconnected:", "msg", err, "host", c.RealIP, "clients", len(Clients))
break
}
// Handle incoming commands
err = json.Unmarshal(message, &clientCommand)
if err != nil {
log.Error("Error unmarshalling command:", "msg", err)
helper.Logger.Error("Error unmarshalling command:", "msg", err)
continue
}
@ -55,10 +55,10 @@ func handleClientCommands(c models.WebsocketClient) {
case "updateSettings":
if !pomodoro.IsPomodoroOngoing() {
if !checkSettings(clientCommand.Settings) {
log.Warn("Ignoring invalid config:", "msg", clientCommand.Settings, "host", c.Conn.RemoteAddr())
helper.Logger.Warn("Ignoring invalid config:", "msg", clientCommand.Settings, "host", c.Conn.RemoteAddr())
break
}
log.Info("Client send config", "config", clientCommand.Settings, "host", c.Conn.RemoteAddr())
helper.Logger.Info("Client send config", "config", clientCommand.Settings, "host", c.Conn.RemoteAddr())
pomodoro.UpdateSettings(clientCommand.Settings)
}
}

View file

@ -1,12 +1,12 @@
package websocket
import (
"github.com/charmbracelet/log"
"github.com/gorilla/websocket"
"net"
"net/http"
"sync"
"git.smsvc.net/pomodoro/GoTomato/internal/helper"
"git.smsvc.net/pomodoro/GoTomato/pkg/models"
)
@ -24,7 +24,7 @@ func HandleConnection(w http.ResponseWriter, r *http.Request) {
// Upgrade initial GET request to a WebSocket
ws, err := upgrader.Upgrade(w, r, nil)
if err != nil {
log.Error("WebSocket upgrade error:", "msg", err)
helper.Logger.Error("WebSocket upgrade error:", "msg", err)
return
}
defer ws.Close()
@ -38,7 +38,7 @@ func HandleConnection(w http.ResponseWriter, r *http.Request) {
Clients[ws.LocalAddr()] = &client
mu.Unlock()
log.Info("Client connected", "host", client.RealIP, "clients", len(Clients))
helper.Logger.Info("Client connected", "host", client.RealIP, "clients", len(Clients))
// Listen for commands from the connected client
handleClientCommands(client)