Skip to content
This repository was archived by the owner on Sep 2, 2024. It is now read-only.

Commit 5499a39

Browse files
committed
feat: integrate logger into function, cache, broker, account, oauth
1 parent 49ad3a1 commit 5499a39

File tree

7 files changed

+59
-45
lines changed

7 files changed

+59
-45
lines changed

account.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package staticbackend
22

33
import (
44
"fmt"
5-
"log"
65
"math/rand"
76
"net/http"
87
"strings"
@@ -11,6 +10,7 @@ import (
1110
"github.com/staticbackendhq/core/config"
1211
emailFuncs "github.com/staticbackendhq/core/email"
1312
"github.com/staticbackendhq/core/internal"
13+
"github.com/staticbackendhq/core/logger"
1414
"github.com/staticbackendhq/core/middleware"
1515

1616
"github.com/stripe/stripe-go/v72"
@@ -25,6 +25,7 @@ var (
2525

2626
type accounts struct {
2727
membership *membership
28+
log *logger.Logger
2829
}
2930

3031
func (a *accounts) create(w http.ResponseWriter, r *http.Request) {
@@ -241,13 +242,13 @@ Refer to the documentation at https://staticbackend.com/docs\n
241242
} else {
242243
err = emailer.Send(ed)
243244
if err != nil {
244-
log.Println("error sending email", err)
245+
a.log.Error().Err(err).Msg("error sending email")
245246
http.Error(w, err.Error(), http.StatusInternalServerError)
246247
return
247248
}
248249
}
249250

250-
fmt.Println("DEBUG: ", signUpURL)
251+
a.log.Debug().Msgf("DEBUG: %s", signUpURL)
251252

252253
if fromCLI {
253254
respond(w, http.StatusOK, signUpURL)
@@ -259,7 +260,7 @@ Refer to the documentation at https://staticbackend.com/docs\n
259260
return
260261
}
261262

262-
render(w, r, "login.html", nil, &Flash{Type: "sucess", Message: "We've emailed you all the information you need to get started."})
263+
render(w, r, "login.html", nil, &Flash{Type: "sucess", Message: "We've emailed you all the information you need to get started."}, a.log)
263264
}
264265

265266
func (a *accounts) auth(w http.ResponseWriter, r *http.Request) {

cache/cache.go

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,29 +4,30 @@ import (
44
"context"
55
"encoding/json"
66
"fmt"
7-
"log"
87
"time"
98

109
"github.com/staticbackendhq/core/config"
1110
"github.com/staticbackendhq/core/internal"
11+
"github.com/staticbackendhq/core/logger"
1212

1313
"github.com/go-redis/redis/v8"
1414
)
1515

1616
type Cache struct {
1717
Rdb *redis.Client
1818
Ctx context.Context
19+
log *logger.Logger
1920
}
2021

2122
// NewCache returns an initiated Redis client
22-
func NewCache() *Cache {
23+
func NewCache(log *logger.Logger) *Cache {
2324
var err error
2425
var opt *redis.Options
2526

2627
if uri := config.Current.RedisURL; len(uri) > 0 {
2728
opt, err = redis.ParseURL(uri)
2829
if err != nil {
29-
log.Fatal("invalid REDIS_URL value: ", err)
30+
log.Fatal().Err(err).Msg("invalid REDIS_URL value")
3031
}
3132
} else {
3233
opt = &redis.Options{
@@ -40,6 +41,7 @@ func NewCache() *Cache {
4041
return &Cache{
4142
Rdb: rdb,
4243
Ctx: context.Background(),
44+
log: log,
4345
}
4446
}
4547

@@ -83,7 +85,7 @@ func (c *Cache) Subscribe(send chan internal.Command, token, channel string, clo
8385
pubsub := c.Rdb.Subscribe(c.Ctx, channel)
8486

8587
if _, err := pubsub.Receive(c.Ctx); err != nil {
86-
log.Println("error establishing PubSub subscription", err)
88+
c.log.Error().Err(err).Msg("error establishing PubSub subscription")
8789
return
8890
}
8991

@@ -94,7 +96,7 @@ func (c *Cache) Subscribe(send chan internal.Command, token, channel string, clo
9496
case m := <-ch:
9597
var msg internal.Command
9698
if err := json.Unmarshal([]byte(m.Payload), &msg); err != nil {
97-
log.Println("error parsing JSON message", err)
99+
c.log.Error().Err(err).Msg("error parsing JSON message")
98100
_ = pubsub.Close()
99101
return
100102
}
@@ -129,14 +131,14 @@ func (c *Cache) Publish(msg internal.Command) error {
129131
sysmsg.IsSystemEvent = true
130132
b, err := json.Marshal(sysmsg)
131133
if err != nil {
132-
log.Println("error marshaling the system msg: ", err)
134+
c.log.Error().Err(err).Msg("error marshaling the system msg")
133135
return
134136
}
135137

136138
sysctx, cancel := context.WithTimeout(context.Background(), 500*time.Millisecond)
137139
defer cancel()
138140
if err := c.Rdb.Publish(sysctx, "sbsys", string(b)).Err(); err != nil {
139-
log.Println("error publishing to system channel: ", err)
141+
c.log.Error().Err(err).Msg("error publishing to system channel")
140142
}
141143
}(msg)
142144

@@ -146,21 +148,21 @@ func (c *Cache) Publish(msg internal.Command) error {
146148
func (c *Cache) PublishDocument(channel, typ string, v interface{}) {
147149
subs, err := c.Rdb.PubSubNumSub(c.Ctx, channel).Result()
148150
if err != nil {
149-
fmt.Println("error getting db subscribers for ", channel)
151+
c.log.Error().Err(err).Msgf("error getting db subscribers for ", channel)
150152
return
151153
}
152154

153155
count, ok := subs[channel]
154156
if !ok {
155-
fmt.Println("cannot find channel in subs", channel)
157+
c.log.Warn().Msgf("cannot find channel in subs: %d", channel)
156158
return
157159
} else if count == 0 {
158160
return
159161
}
160162

161163
b, err := json.Marshal(v)
162164
if err != nil {
163-
fmt.Println("error publishing db doc: ", err)
165+
c.log.Error().Err(err).Msg("error publishing db doc")
164166
return
165167
}
166168

@@ -171,7 +173,7 @@ func (c *Cache) PublishDocument(channel, typ string, v interface{}) {
171173
}
172174

173175
if err := c.Publish(msg); err != nil {
174-
fmt.Println("unable to publish db doc events:", err)
176+
c.log.Error().Err(err).Msg("unable to publish db doc events")
175177
}
176178
}
177179

@@ -183,7 +185,8 @@ func (c *Cache) HasPermission(token, repo, payload string) bool {
183185

184186
docs := make(map[string]interface{})
185187
if err := json.Unmarshal([]byte(payload), &docs); err != nil {
186-
fmt.Println("error decoding docs for permissions check", err)
188+
c.log.Error().Err(err).Msg("error decoding docs for permissions check")
189+
187190
return false
188191
}
189192

function/runtime.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@ import (
44
"encoding/json"
55
"errors"
66
"fmt"
7-
"log"
87
"net/http"
98
"strings"
109
"time"
1110

1211
"github.com/staticbackendhq/core/internal"
12+
"github.com/staticbackendhq/core/logger"
1313

1414
"github.com/dop251/goja"
1515
)
@@ -22,6 +22,7 @@ type ExecutionEnvironment struct {
2222
Data internal.ExecData
2323

2424
CurrentRun internal.ExecHistory
25+
log *logger.Logger
2526
}
2627

2728
type Result struct {
@@ -368,7 +369,6 @@ func (env *ExecutionEnvironment) complete(err error) {
368369

369370
//TODO: this needs to be regrouped and ran un batch
370371
if err := env.DataStore.RanFunction(env.BaseName, env.Data.ID, env.CurrentRun); err != nil {
371-
//TODO: do something with those error
372-
log.Println("error logging function complete: ", err)
372+
env.log.Error().Err(err).Msg("error logging function complete")
373373
}
374374
}

function/scheduler.go

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

33
import (
4-
"log"
54
"time"
65

76
"github.com/staticbackendhq/core/internal"
7+
"github.com/staticbackendhq/core/logger"
88

99
"github.com/go-co-op/gocron"
1010
"go.mongodb.org/mongo-driver/mongo"
@@ -15,12 +15,13 @@ type TaskScheduler struct {
1515
Volatile internal.PubSuber
1616
DataStore internal.Persister
1717
Scheduler *gocron.Scheduler
18+
log *logger.Logger
1819
}
1920

2021
func (ts *TaskScheduler) Start() {
2122
tasks, err := ts.DataStore.ListTasks()
2223
if err != nil {
23-
log.Println("error loading tasks: ", err)
24+
ts.log.Error().Err(err).Msg("error loading tasks")
2425
return
2526
}
2627

@@ -30,7 +31,7 @@ func (ts *TaskScheduler) Start() {
3031
for _, task := range tasks {
3132
_, err := ts.Scheduler.Cron(task.Interval).Tag(task.ID).Do(ts.run, task)
3233
if err != nil {
33-
log.Printf("error scheduling this task: %s -> %v\n", task.ID, err)
34+
ts.log.Error().Err(err).Msgf("error scheduling this task: %s", task.ID)
3435
}
3536
}
3637
}
@@ -41,7 +42,8 @@ func (ts *TaskScheduler) run(task internal.Task) {
4142
if err := ts.Volatile.GetTyped("root:"+task.BaseName, &auth); err != nil {
4243
tok, err := ts.DataStore.GetRootForBase(task.BaseName)
4344
if err != nil {
44-
log.Printf("error finding root token for base %s: %v\n", task.BaseName, err)
45+
ts.log.Error().Err(err).Msgf("error finding root token for base %s", task.BaseName)
46+
4547
return
4648
}
4749

@@ -54,7 +56,7 @@ func (ts *TaskScheduler) run(task internal.Task) {
5456
}
5557

5658
if err := ts.Volatile.SetTyped("root:"+task.BaseName, auth); err != nil {
57-
log.Println("error setting auth inside TaskScheduler.run: ", err)
59+
ts.log.Error().Err(err).Msg("error setting auth inside TaskScheduler.run")
5860
return
5961
}
6062
}
@@ -70,7 +72,7 @@ func (ts *TaskScheduler) run(task internal.Task) {
7072
func (ts *TaskScheduler) execFunction(auth internal.Auth, task internal.Task) {
7173
fn, err := ts.DataStore.GetFunctionForExecution(task.BaseName, task.Value)
7274
if err != nil {
73-
log.Printf("cannot find function %s on task %s", task.Value, task.ID)
75+
ts.log.Error().Err(err).Msgf("cannot find function %s on task %s", task.Value)
7476
return
7577
}
7678

@@ -80,10 +82,11 @@ func (ts *TaskScheduler) execFunction(auth internal.Auth, task internal.Task) {
8082
DataStore: ts.DataStore,
8183
Volatile: ts.Volatile,
8284
Data: fn,
85+
log: ts.log,
8386
}
8487

8588
if err := exe.Execute(task.Name); err != nil {
86-
log.Printf("error executing function %s: %v", task.Value, err)
89+
ts.log.Error().Err(err).Msgf("error executing function %s", task.Value)
8790
}
8891
}
8992

@@ -92,7 +95,7 @@ func (ts *TaskScheduler) sendMessage(auth internal.Auth, task internal.Task) {
9295

9396
meta, ok := task.Meta.(internal.MetaMessage)
9497
if !ok {
95-
log.Println("unable to get meta data for type MetaMessage for task: ", task.ID)
98+
ts.log.Warn().Msgf("unable to get meta data for type MetaMessage for task: %d", task.ID)
9699
return
97100
}
98101

@@ -105,6 +108,6 @@ func (ts *TaskScheduler) sendMessage(auth internal.Auth, task internal.Task) {
105108
}
106109

107110
if err := ts.Volatile.Publish(msg); err != nil {
108-
log.Println("error publishing message from task", task.ID, err)
111+
ts.log.Error().Err(err).Msgf("error publishing message from task: %d", task.ID)
109112
}
110113
}

function/subscriber.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,15 @@ package function
22

33
import (
44
"fmt"
5-
"log"
65

76
"github.com/staticbackendhq/core/internal"
7+
"github.com/staticbackendhq/core/logger"
88
)
99

1010
type Subscriber struct {
1111
PubSub internal.PubSuber
1212
GetExecEnv func(token string) (ExecutionEnvironment, error)
13+
Log *logger.Logger
1314
}
1415

1516
// Start starts the system event subscription.
@@ -26,7 +27,7 @@ func (sub *Subscriber) Start() {
2627
case msg := <-receiver:
2728
go sub.process(msg)
2829
case <-close:
29-
log.Println("system event channel closed?!?")
30+
sub.Log.Info().Msg("system event channel closed?!?")
3031
}
3132
}
3233
}
@@ -44,8 +45,7 @@ func (sub *Subscriber) process(msg internal.Command) {
4445
func (sub *Subscriber) handleRealtimeEvents(msg internal.Command) {
4546
exe, err := sub.GetExecEnv(msg.Token)
4647
if err != nil {
47-
log.Println("cannot retrieve base from token", msg.Token)
48-
log.Println(err)
48+
sub.Log.Error().Err(err).Msgf("cannot retrieve base from token: %s", msg.Token)
4949
return
5050
}
5151

@@ -55,13 +55,13 @@ func (sub *Subscriber) handleRealtimeEvents(msg internal.Command) {
5555
if err := sub.PubSub.GetTyped(key, &ids); err != nil {
5656
funcs, err := exe.DataStore.ListFunctionsByTrigger(exe.BaseName, msg.Type)
5757
if err != nil {
58-
log.Println("error getting functions by trigger: ", err)
58+
sub.Log.Error().Err(err).Msg("error getting functions by trigger")
5959
return
6060
}
6161

6262
for _, fn := range funcs {
6363
if err := sub.PubSub.SetTyped("fn_"+fn.ID, fn); err != nil {
64-
log.Println("error adding function to cache: ", err)
64+
sub.Log.Error().Err(err).Msg("error adding function to cache")
6565
return
6666
}
6767

@@ -74,14 +74,14 @@ func (sub *Subscriber) handleRealtimeEvents(msg internal.Command) {
7474
for _, id := range ids {
7575
var fn internal.ExecData
7676
if err := sub.PubSub.GetTyped("fn_"+id, &fn); err != nil {
77-
log.Println("error getting function out of cache: ", err)
77+
sub.Log.Error().Err(err).Msg("error getting function out of cache")
7878
return
7979
}
8080

8181
exe.Data = fn
8282
go func(ex ExecutionEnvironment) {
8383
if err := ex.Execute(msg); err != nil {
84-
log.Printf(`executing "%s" function failed: %v"`, ex.Data.FunctionName, err)
84+
sub.Log.Error().Err(err).Msgf(`executing "%s" function failed"`, ex.Data.FunctionName)
8585
}
8686
}(exe)
8787
}

oauth.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88

99
"github.com/staticbackendhq/core/config"
1010
"github.com/staticbackendhq/core/internal"
11+
"github.com/staticbackendhq/core/logger"
1112
"github.com/staticbackendhq/core/middleware"
1213

1314
"github.com/markbates/goth"
@@ -24,6 +25,7 @@ const (
2425

2526
type ExternalLogins struct {
2627
membership *membership
28+
log *logger.Logger
2729
}
2830

2931
type ExternalUser struct {
@@ -185,7 +187,7 @@ func (el *ExternalLogins) callback() http.Handler {
185187
return
186188
}
187189

188-
render(w, r, "oauth.html", nil, nil)
190+
render(w, r, "oauth.html", nil, nil, el.log)
189191
})
190192

191193
next.ServeHTTP(w, r)

0 commit comments

Comments
 (0)