mirror of
https://github.com/sigmasternchen/threadule
synced 2025-03-15 08:09:01 +00:00
added logging
This commit is contained in:
parent
7e853da63d
commit
9ce408f9c0
6 changed files with 52 additions and 29 deletions
|
@ -3,6 +3,9 @@ package main
|
|||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"github.com/google/logger"
|
||||
"log"
|
||||
"os"
|
||||
"threadule/backend/internal/app"
|
||||
"threadule/backend/internal/config"
|
||||
"threadule/backend/internal/data"
|
||||
|
@ -24,28 +27,27 @@ func main() {
|
|||
}
|
||||
|
||||
ctx := &app.Context{
|
||||
Config: cfg,
|
||||
Config: cfg,
|
||||
Log: logger.Init("default", false, true, os.Stderr),
|
||||
AccessLog: log.New(os.Stdout, "access", log.Ldate|log.Lmicroseconds|log.Lmsgprefix),
|
||||
}
|
||||
|
||||
ctx.Logic, err = logic.Setup(ctx)
|
||||
if err != nil {
|
||||
fmt.Println("couldn't setup logic layer")
|
||||
fmt.Println(err)
|
||||
return
|
||||
ctx.Log.Error("couldn't setup logic layer")
|
||||
ctx.Log.Fatal(err)
|
||||
}
|
||||
|
||||
ctx.Data, err = data.Setup(ctx)
|
||||
if err != nil {
|
||||
fmt.Println("couldn't setup persistence layer")
|
||||
fmt.Println(err)
|
||||
return
|
||||
ctx.Log.Error("couldn't setup persistence layer")
|
||||
ctx.Log.Fatal(err)
|
||||
}
|
||||
|
||||
handler := router.Setup(ctx)
|
||||
err = web.StartServer(ctx, handler)
|
||||
if err != nil {
|
||||
fmt.Println("couldn't start web server")
|
||||
fmt.Println(err)
|
||||
return
|
||||
ctx.Log.Error("couldn't start web server")
|
||||
ctx.Log.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@ go 1.16
|
|||
require (
|
||||
github.com/dghubble/go-twitter v0.0.0-20210609183100-2fdbf421508e
|
||||
github.com/dghubble/oauth1 v0.7.0
|
||||
github.com/google/logger v1.1.1
|
||||
github.com/julienschmidt/httprouter v1.3.0
|
||||
github.com/kr/pretty v0.1.0 // indirect
|
||||
github.com/pelletier/go-toml/v2 v2.0.0-beta.3
|
||||
|
|
|
@ -12,6 +12,8 @@ github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfC
|
|||
github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
|
||||
github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk=
|
||||
github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
|
||||
github.com/google/logger v1.1.1 h1:+6Z2geNxc9G+4D4oDO9njjjn2d0wN5d7uOo0vOIW1NQ=
|
||||
github.com/google/logger v1.1.1/go.mod h1:BkeJZ+1FhQ+/d087r4dzojEg1u2ZX+ZqG1jTUrLM+zQ=
|
||||
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
|
||||
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
|
||||
github.com/jinzhu/now v1.1.2 h1:eVKgfIdy9b6zbWBMgFpfDPoAMifwSZagU9HmEU6zgiI=
|
||||
|
@ -33,6 +35,8 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+
|
|||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||
github.com/stretchr/testify v1.7.1-0.20210427113832-6241f9ab9942 h1:t0lM6y/M5IiUZyvbBTcngso8SZEZICH7is9B6g/obVU=
|
||||
github.com/stretchr/testify v1.7.1-0.20210427113832-6241f9ab9942/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
golang.org/x/sys v0.0.0-20210426230700-d19ff857e887 h1:dXfMednGJh/SUUFjTLsWJz3P+TQt9qnR11GgeI3vWKs=
|
||||
golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
|
||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
|
|
|
@ -1,9 +1,15 @@
|
|||
package app
|
||||
|
||||
import "threadule/backend/internal/config"
|
||||
import (
|
||||
"github.com/google/logger"
|
||||
"log"
|
||||
"threadule/backend/internal/config"
|
||||
)
|
||||
|
||||
type Context struct {
|
||||
Config *config.Config
|
||||
Logic Logic
|
||||
Data Data
|
||||
Config *config.Config
|
||||
Log *logger.Logger
|
||||
AccessLog *log.Logger
|
||||
Logic Logic
|
||||
Data Data
|
||||
}
|
||||
|
|
|
@ -15,19 +15,22 @@ func (l *Logic) sendTweet(client *twitter.Client, tweet *models.Tweet, prevId in
|
|||
)
|
||||
|
||||
if err != nil {
|
||||
l.ctx.Log.Warningf("couldn't send tweet: %v", err)
|
||||
tweet.Status = models.TweetFailed
|
||||
errorString := new(string)
|
||||
*errorString = err.Error()
|
||||
tweet.Error = errorString
|
||||
_ = l.ctx.Data.UpdateTweet(tweet)
|
||||
// TODO log data error
|
||||
err2 := l.ctx.Data.UpdateTweet(tweet)
|
||||
if err2 != nil {
|
||||
l.ctx.Log.Errorf("couldn't update tweet in DB: %v", err2)
|
||||
}
|
||||
|
||||
return 0, err
|
||||
}
|
||||
|
||||
tweet.Status = models.TweetDone
|
||||
_ = l.ctx.Data.UpdateTweet(tweet)
|
||||
// TODO log data error
|
||||
err = l.ctx.Data.UpdateTweet(tweet)
|
||||
l.ctx.Log.Errorf("couldn't update tweet in DB: %v", err)
|
||||
|
||||
return status.ID, nil
|
||||
}
|
||||
|
@ -50,18 +53,19 @@ func (l *Logic) sendThread(thread *models.Thread) {
|
|||
client := l.getTwitterClient(thread.Account)
|
||||
|
||||
thread.Status = models.ThreadProcessing
|
||||
_ = l.ctx.Data.UpdateThread(thread)
|
||||
// TODO log data error
|
||||
err := l.ctx.Data.UpdateThread(thread)
|
||||
l.ctx.Log.Errorf("couldn't update thread in DB: %v", err)
|
||||
|
||||
tweets, err := l.ctx.Data.GetTweetsForThread(thread)
|
||||
if err != nil {
|
||||
// TODO log error
|
||||
l.ctx.Log.Errorf("couldn't get tweets from DB: %v", err)
|
||||
|
||||
errorString := new(string)
|
||||
*errorString = err.Error()
|
||||
thread.Status = models.ThreadFailed
|
||||
thread.Error = errorString
|
||||
_ = l.ctx.Data.UpdateThread(thread)
|
||||
// TODO log error
|
||||
err = l.ctx.Data.UpdateThread(thread)
|
||||
l.ctx.Log.Errorf("couldn't update thread in DB: %v", err)
|
||||
|
||||
return
|
||||
}
|
||||
|
@ -82,7 +86,7 @@ func (l *Logic) sendThread(thread *models.Thread) {
|
|||
for _, id := range tweetIds {
|
||||
_, _, err = client.Statuses.Destroy(id, nil)
|
||||
if err != nil {
|
||||
// TODO log error
|
||||
l.ctx.Log.Errorf("couldn't destroy tweets: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -94,19 +98,21 @@ func (l *Logic) sendThread(thread *models.Thread) {
|
|||
thread.Error = errorString
|
||||
}
|
||||
|
||||
_ = l.ctx.Data.UpdateThread(thread)
|
||||
// TODO log data error
|
||||
err = l.ctx.Data.UpdateThread(thread)
|
||||
l.ctx.Log.Errorf("couldn't update thread in DB: %v", err)
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
thread.Status = models.ThreadDone
|
||||
_ = l.ctx.Data.UpdateThread(thread)
|
||||
// TODO log data error
|
||||
err = l.ctx.Data.UpdateThread(thread)
|
||||
l.ctx.Log.Errorf("couldn't update thread in DB: %v", err)
|
||||
}
|
||||
|
||||
func (l *Logic) scheduleTrigger() {
|
||||
threads, err := l.ctx.Data.GetScheduledThreads()
|
||||
if err != nil {
|
||||
// TODO log error
|
||||
l.ctx.Log.Errorf("couldn't get scheduled threads from DB: %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
|
|
|
@ -5,16 +5,20 @@ import (
|
|||
"net/http"
|
||||
"threadule/backend/internal/app"
|
||||
"threadule/backend/internal/web"
|
||||
"time"
|
||||
)
|
||||
|
||||
func ctxWrapper(appCtx *app.Context, handler web.Handler) httprouter.Handle {
|
||||
return func(writer http.ResponseWriter, request *http.Request, params httprouter.Params) {
|
||||
start := time.Now()
|
||||
handler(&web.Context{
|
||||
Response: writer,
|
||||
Request: request,
|
||||
Params: params,
|
||||
AppCtx: appCtx,
|
||||
})
|
||||
end := time.Now()
|
||||
appCtx.AccessLog.Printf("%s %s; %lld ms", request.Method, request.URL.String(), end.Sub(start).Milliseconds())
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue