Skip to content

Commit 0ffd79e

Browse files
refactor: better logs
1 parent 80b0904 commit 0ffd79e

8 files changed

Lines changed: 122 additions & 34 deletions

File tree

backend/controllers/app_handlers.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"ccsync_backend/utils"
55
"context"
66
"encoding/json"
7-
"log"
87
"net/http"
98
"os"
109

@@ -45,7 +44,7 @@ func (a *App) OAuthHandler(w http.ResponseWriter, r *http.Request) {
4544
// @Failure 500 {string} string "Internal server error"
4645
// @Router /auth/callback [get]
4746
func (a *App) OAuthCallbackHandler(w http.ResponseWriter, r *http.Request) {
48-
log.Println("Fetching user info...")
47+
utils.Logger.Info("Fetching user info...")
4948

5049
code := r.URL.Query().Get("code")
5150

@@ -87,7 +86,7 @@ func (a *App) OAuthCallbackHandler(w http.ResponseWriter, r *http.Request) {
8786
return
8887
}
8988

90-
log.Printf("User Info: %v", userInfo)
89+
utils.Logger.Infof("User Info: %v", userInfo)
9190

9291
frontendOriginDev := os.Getenv("FRONTEND_ORIGIN_DEV")
9392
http.Redirect(w, r, frontendOriginDev+"/home", http.StatusSeeOther)
@@ -110,7 +109,7 @@ func (a *App) UserInfoHandler(w http.ResponseWriter, r *http.Request) {
110109
return
111110
}
112111

113-
log.Printf("Sending User Info: %v", userInfo)
112+
utils.Logger.Infof("Sending User Info: %v", userInfo)
114113
w.Header().Set("Content-Type", "application/json")
115114
json.NewEncoder(w).Encode(userInfo)
116115
}
@@ -148,5 +147,5 @@ func (a *App) LogoutHandler(w http.ResponseWriter, r *http.Request) {
148147
}
149148

150149
w.WriteHeader(http.StatusOK)
151-
log.Print("User has logged out")
150+
utils.Logger.Info("User has logged out")
152151
}

backend/controllers/job_queue.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package controllers
22

33
import (
4-
"fmt"
5-
"log"
64
"sync"
5+
6+
"ccsync_backend/utils"
77
)
88

99
type Job struct {
@@ -37,22 +37,22 @@ func (q *JobQueue) AddJob(job Job) {
3737

3838
func (q *JobQueue) processJobs() {
3939
for job := range q.jobChannel {
40-
fmt.Printf("Executing job: %s\n", job.Name)
40+
utils.Logger.Infof("Executing job: %s", job.Name)
4141

4242
go BroadcastJobStatus(JobStatus{
4343
Job: job.Name,
4444
Status: "in-progress",
4545
})
4646

4747
if err := job.Execute(); err != nil {
48-
log.Printf("Error executing job %s: %v\n", job.Name, err)
48+
utils.Logger.Errorf("Error executing job %s: %v", job.Name, err)
4949

5050
go BroadcastJobStatus(JobStatus{
5151
Job: job.Name,
5252
Status: "failure",
5353
})
5454
} else {
55-
log.Printf("Success in executing job %s\n", job.Name)
55+
utils.Logger.Infof("Success in executing job %s", job.Name)
5656

5757
go BroadcastJobStatus(JobStatus{
5858
Job: job.Name,

backend/controllers/websocket.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
package controllers
22

33
import (
4-
"log"
54
"net/http"
65

6+
"ccsync_backend/utils"
7+
78
"github.com/gorilla/websocket"
89
)
910

@@ -24,37 +25,37 @@ var broadcast = make(chan JobStatus)
2425
func WebSocketHandler(w http.ResponseWriter, r *http.Request) {
2526
ws, err := upgrader.Upgrade(w, r, nil)
2627
if err != nil {
27-
log.Println("WebSocket Upgrade Error:", err)
28+
utils.Logger.Error("WebSocket Upgrade Error:", err)
2829
return
2930
}
3031
defer ws.Close()
3132

3233
clients[ws] = true
33-
log.Println("New WebSocket connection established!")
34+
utils.Logger.Info("New WebSocket connection established!")
3435

3536
for {
3637
_, _, err := ws.ReadMessage()
3738
if err != nil {
3839
delete(clients, ws)
39-
log.Println("WebSocket connection closed:", err)
40+
utils.Logger.Info("WebSocket connection closed:", err)
4041
break
4142
}
4243
}
4344
}
4445

4546
func BroadcastJobStatus(jobStatus JobStatus) {
46-
log.Printf("Broadcasting: %+v\n", jobStatus)
47+
utils.Logger.Infof("Broadcasting: %+v", jobStatus)
4748
broadcast <- jobStatus
4849
}
4950

5051
func JobStatusManager() {
5152
for {
5253
jobStatus := <-broadcast
53-
log.Printf("Sending to clients: %+v\n", jobStatus)
54+
utils.Logger.Infof("Sending to clients: %+v", jobStatus)
5455
for client := range clients {
5556
err := client.WriteJSON(jobStatus)
5657
if err != nil {
57-
log.Printf("WebSocket Write Error: %v\n", err)
58+
utils.Logger.Errorf("WebSocket Write Error: %v", err)
5859
client.Close()
5960
delete(clients, client)
6061
}

backend/go.mod

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ module ccsync_backend
33
go 1.19
44

55
require (
6+
github.com/charmbracelet/log v0.4.2
67
github.com/gorilla/sessions v1.2.2
78
github.com/swaggo/http-swagger v1.3.4
89
github.com/swaggo/swag v1.16.3
@@ -11,19 +12,33 @@ require (
1112

1213
require (
1314
github.com/KyleBanks/depth v1.2.1 // indirect
15+
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
16+
github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc // indirect
17+
github.com/charmbracelet/lipgloss v1.1.0 // indirect
18+
github.com/charmbracelet/x/ansi v0.8.0 // indirect
19+
github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd // indirect
20+
github.com/charmbracelet/x/term v0.2.1 // indirect
1421
github.com/davecgh/go-spew v1.1.1 // indirect
22+
github.com/go-logfmt/logfmt v0.6.0 // indirect
1523
github.com/go-openapi/jsonpointer v0.19.5 // indirect
1624
github.com/go-openapi/jsonreference v0.20.0 // indirect
1725
github.com/go-openapi/spec v0.20.6 // indirect
1826
github.com/go-openapi/swag v0.19.15 // indirect
1927
github.com/gorilla/securecookie v1.1.2 // indirect
2028
github.com/josharian/intern v1.0.0 // indirect
29+
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
2130
github.com/mailru/easyjson v0.7.6 // indirect
31+
github.com/mattn/go-isatty v0.0.20 // indirect
32+
github.com/mattn/go-runewidth v0.0.16 // indirect
33+
github.com/muesli/termenv v0.16.0 // indirect
2234
github.com/pmezard/go-difflib v1.0.0 // indirect
35+
github.com/rivo/uniseg v0.4.7 // indirect
2336
github.com/swaggo/files v0.0.0-20220610200504-28940afbdbfe // indirect
37+
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
38+
golang.org/x/exp v0.0.0-20231006140011-7918f672742d // indirect
2439
golang.org/x/net v0.17.0 // indirect
25-
golang.org/x/sys v0.13.0 // indirect
26-
golang.org/x/tools v0.7.0 // indirect
40+
golang.org/x/sys v0.30.0 // indirect
41+
golang.org/x/tools v0.14.0 // indirect
2742
gopkg.in/yaml.v2 v2.4.0 // indirect
2843
gopkg.in/yaml.v3 v3.0.1 // indirect
2944
)
@@ -33,5 +48,5 @@ require (
3348
github.com/google/uuid v1.6.0
3449
github.com/gorilla/websocket v1.5.3
3550
github.com/joho/godotenv v1.5.1
36-
github.com/stretchr/testify v1.9.0
51+
github.com/stretchr/testify v1.10.0
3752
)

backend/go.sum

Lines changed: 39 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,26 @@ cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2Qx
22
cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k=
33
github.com/KyleBanks/depth v1.2.1 h1:5h8fQADFrWtarTdtDudMmGsC7GPbOAu6RVB3ffsVFHc=
44
github.com/KyleBanks/depth v1.2.1/go.mod h1:jzSb9d0L43HxTQfT+oSA1EEp2q+ne2uh6XgeJcm8brE=
5+
github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k=
6+
github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8=
7+
github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc h1:4pZI35227imm7yK2bGPcfpFEmuY1gc2YSTShr4iJBfs=
8+
github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc/go.mod h1:X4/0JoqgTIPSFcRA/P6INZzIuyqdFY5rm8tb41s9okk=
9+
github.com/charmbracelet/lipgloss v1.1.0 h1:vYXsiLHVkK7fp74RkV7b2kq9+zDLoEU4MZoFqR/noCY=
10+
github.com/charmbracelet/lipgloss v1.1.0/go.mod h1:/6Q8FR2o+kj8rz4Dq0zQc3vYf7X+B0binUUBwA0aL30=
11+
github.com/charmbracelet/log v0.4.2 h1:hYt8Qj6a8yLnvR+h7MwsJv/XvmBJXiueUcI3cIxsyig=
12+
github.com/charmbracelet/log v0.4.2/go.mod h1:qifHGX/tc7eluv2R6pWIpyHDDrrb/AG71Pf2ysQu5nw=
13+
github.com/charmbracelet/x/ansi v0.8.0 h1:9GTq3xq9caJW8ZrBTe0LIe2fvfLR/bYXKTx2llXn7xE=
14+
github.com/charmbracelet/x/ansi v0.8.0/go.mod h1:wdYl/ONOLHLIVmQaxbIYEC/cRKOQyjTkowiI4blgS9Q=
15+
github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd h1:vy0GVL4jeHEwG5YOXDmi86oYw2yuYUGqz6a8sLwg0X8=
16+
github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd/go.mod h1:xe0nKWGd3eJgtqZRaN9RjMtK7xUYchjzPr7q6kcvCCs=
17+
github.com/charmbracelet/x/term v0.2.1 h1:AQeHeLZ1OqSXhrAWpYUtZyX1T3zVxfpZuEQMIQaGIAQ=
18+
github.com/charmbracelet/x/term v0.2.1/go.mod h1:oQ4enTYFV7QN4m0i9mzHrViD7TQKvNEEkHUMCmsxdUg=
519
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
620
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
721
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
822
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
23+
github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4=
24+
github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs=
925
github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
1026
github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY=
1127
github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
@@ -35,40 +51,56 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
3551
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
3652
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
3753
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
54+
github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY=
55+
github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
3856
github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
3957
github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
4058
github.com/mailru/easyjson v0.7.6 h1:8yTIVnZgCoiM1TgqoeTl+LfU5Jg6/xL3QhGQnimLYnA=
4159
github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
60+
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
61+
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
62+
github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc=
63+
github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
64+
github.com/muesli/termenv v0.16.0 h1:S5AlUN9dENB57rsbnkPyfdGuWIlkmzJjbFf0Tf5FWUc=
65+
github.com/muesli/termenv v0.16.0/go.mod h1:ZRfOIKPFDYQoDFF4Olj7/QJbW60Ol/kL1pU3VfY/Cnk=
4266
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
4367
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
4468
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
4569
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
70+
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
71+
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
72+
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
4673
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
4774
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
4875
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
49-
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
50-
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
76+
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
77+
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
5178
github.com/swaggo/files v0.0.0-20220610200504-28940afbdbfe h1:K8pHPVoTgxFJt1lXuIzzOX7zZhZFldJQK/CgKx9BFIc=
5279
github.com/swaggo/files v0.0.0-20220610200504-28940afbdbfe/go.mod h1:lKJPbtWzJ9JhsTN1k1gZgleJWY/cqq0psdoMmaThG3w=
5380
github.com/swaggo/http-swagger v1.3.4 h1:q7t/XLx0n15H1Q9/tk3Y9L4n210XzJF5WtnDX64a5ww=
5481
github.com/swaggo/http-swagger v1.3.4/go.mod h1:9dAh0unqMBAlbp1uE2Uc2mQTxNMU/ha4UbucIg1MFkQ=
5582
github.com/swaggo/swag v1.16.3 h1:PnCYjPCah8FK4I26l2F/KQ4yz3sILcVUN3cTlBFA9Pg=
5683
github.com/swaggo/swag v1.16.3/go.mod h1:DImHIuOFXKpMFAQjcC7FG4m3Dg4+QuUgUzJmKjI/gRk=
57-
golang.org/x/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs=
84+
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no=
85+
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM=
86+
golang.org/x/exp v0.0.0-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI=
87+
golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo=
88+
golang.org/x/mod v0.13.0 h1:I/DsJXRlw/8l/0c24sM9yb0T4z9liZTduXvdAWYiysY=
5889
golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
5990
golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM=
6091
golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
6192
golang.org/x/oauth2 v0.20.0 h1:4mQdhULixXKP1rwYBW0vAijoXnkTG0BLCDRzfe1idMo=
6293
golang.org/x/oauth2 v0.20.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
6394
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
6495
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
65-
golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE=
66-
golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
96+
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
97+
golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
98+
golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
6799
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
68100
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
69101
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
70-
golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4=
71-
golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s=
102+
golang.org/x/tools v0.14.0 h1:jvNa2pY0M4r62jkRQ6RwEZZyPcymeL9XZMLBbV7U2nc=
103+
golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg=
72104
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
73105
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
74106
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU=

backend/main.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@ package main
22

33
import (
44
"encoding/gob"
5-
"log"
65
"net/http"
76
"os"
87
"time"
98

9+
"ccsync_backend/utils"
10+
1011
"github.com/gorilla/sessions"
1112
"github.com/joho/godotenv"
1213
"golang.org/x/oauth2"
@@ -46,9 +47,9 @@ import (
4647
func main() {
4748
if os.Getenv("ENV") != "production" {
4849
_ = godotenv.Load()
49-
log.Println("Loaded")
50+
utils.Logger.Info("Loaded")
5051
} else {
51-
log.Println("Continue")
52+
utils.Logger.Info("Continue")
5253
}
5354

5455
controllers.GlobalJobQueue = controllers.NewJobQueue()
@@ -69,7 +70,7 @@ func main() {
6970
// Create a session store
7071
sessionKey := []byte(os.Getenv("SESSION_KEY"))
7172
if len(sessionKey) == 0 {
72-
log.Fatal("SESSION_KEY environment variable is not set or empty")
73+
utils.Logger.Fatal("SESSION_KEY environment variable is not set or empty")
7374
}
7475
store := sessions.NewCookieStore(sessionKey)
7576
gob.Register(map[string]interface{}{})
@@ -99,9 +100,9 @@ func main() {
99100
mux.HandleFunc("/api/docs/", httpSwagger.WrapHandler)
100101

101102
go controllers.JobStatusManager()
102-
log.Println("Server started at :8000")
103-
log.Println("API documentation available at http://localhost:8000/api/docs/index.html")
103+
utils.Logger.Info("Server started at :8000")
104+
utils.Logger.Info("API documentation available at http://localhost:8000/api/docs/index.html")
104105
if err := http.ListenAndServe(":8000", app.EnableCORS(mux)); err != nil {
105-
log.Fatal(err)
106+
utils.Logger.Fatal(err)
106107
}
107108
}

backend/models/logs.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ package models
33
import (
44
"sync"
55
"time"
6+
7+
"ccsync_backend/utils"
68
)
79

810
// LogEntry represents a single log entry for sync operations
@@ -51,6 +53,18 @@ func (ls *LogStore) AddLog(level, message, syncID, operation string) {
5153
Operation: operation,
5254
}
5355

56+
// Also log to the structured logger
57+
switch level {
58+
case "INFO":
59+
utils.Logger.Infof(message)
60+
case "WARN":
61+
utils.Logger.Warnf(message)
62+
case "ERROR":
63+
utils.Logger.Errorf(message)
64+
default:
65+
utils.Logger.Infof(message)
66+
}
67+
5468
// Add to the end
5569
ls.entries = append(ls.entries, entry)
5670

backend/utils/logger.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package utils
2+
3+
import (
4+
"os"
5+
6+
"github.com/charmbracelet/log"
7+
)
8+
9+
var Logger *log.Logger
10+
11+
func init() {
12+
logLevelStr := os.Getenv("LOG_LEVEL")
13+
logLevel := log.InfoLevel
14+
if logLevelStr != "" {
15+
parsedLevel, err := log.ParseLevel(logLevelStr)
16+
if err == nil {
17+
logLevel = parsedLevel
18+
}
19+
}
20+
21+
Logger = log.NewWithOptions(os.Stderr, log.Options{
22+
ReportTimestamp: true,
23+
TimeFormat: "2006-01-02 15:04:05",
24+
Level: logLevel,
25+
})
26+
}

0 commit comments

Comments
 (0)