Skip to content

Commit 414000d

Browse files
committed
add common logging
1 parent 565ccd2 commit 414000d

9 files changed

+46
-50
lines changed

engine/engine.go

-4
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ import (
44
"github.com/go-chi/jwtauth"
55
"github.com/gorilla/mux"
66
"github.com/khyurri/speedlog/engine/mongo"
7-
"log"
8-
"os"
97
"time"
108
)
119

@@ -21,7 +19,6 @@ type Env struct {
2119
SigningKey *jwtauth.JWTAuth
2220
AllowOrigin string
2321
Location *time.Location
24-
Logger *log.Logger
2522
}
2623

2724
// NewEnv - create new env struct
@@ -31,7 +28,6 @@ func NewEnv(dbEngine mongo.DataStore, signingKey string, location *time.Location
3128
DBEngine: dbEngine,
3229
SigningKey: k,
3330
Location: location,
34-
Logger: log.New(os.Stdout, "speedlog ", log.LstdFlags|log.Lshortfile),
3531
}
3632
}
3733

engine/engine_test.go

-3
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ import (
66
"github.com/khyurri/speedlog/engine/mongo"
77
"github.com/khyurri/speedlog/testutils"
88
"golang.org/x/crypto/bcrypt"
9-
"log"
10-
"os"
119
"testing"
1210
"time"
1311
)
@@ -100,7 +98,6 @@ func NewTestEnv(t testing.TB, allowOrigin string) (env *Env) {
10098
location, err := time.LoadLocation(location)
10199
ok(t, err)
102100
env = NewEnv(dbEngine, singKey, location)
103-
env.Logger = log.New(os.Stdout, "testing ", log.LstdFlags|log.Lshortfile)
104101
if len(allowOrigin) > 0 {
105102
env.AllowOrigin = allowOrigin
106103
}

engine/event.go

+25-19
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,28 @@ package engine
33
import (
44
"encoding/json"
55
"errors"
6+
"fmt"
67
"github.com/gorilla/mux"
78
"github.com/khyurri/speedlog/engine/mongo"
9+
"github.com/khyurri/speedlog/utils"
810
"net/http"
911
"time"
1012
)
1113

1214
const (
13-
timeLayout = "2006-01-02T15:04"
15+
timeLayout = "2006-01-02T15:04:05"
1416
)
1517

18+
// badRequest returns true if StatusErr is set
19+
func badRequest(err error, r *Resp) bool {
20+
if err != nil {
21+
utils.Ok(err)
22+
r.Status = StatusErr
23+
return true
24+
}
25+
return false
26+
}
27+
1628
func (env *Env) createEventHttp() http.HandlerFunc {
1729

1830
type request struct {
@@ -25,12 +37,11 @@ func (env *Env) createEventHttp() http.HandlerFunc {
2537
dec := json.NewDecoder(r.Body)
2638
err = dec.Decode(target)
2739
if err != nil {
28-
env.Logger.Printf("[error] deconding request error: %s", err)
29-
env.Logger.Printf("[debug] request body: %s", r.Body)
40+
utils.Ok(fmt.Errorf(err.Error()+". Body: %+v", r.Body))
3041
return
3142
}
32-
env.Logger.Printf("[debug] metricName: %s, durationMs: %f\n",
33-
target.MetricName, target.DurationMs)
43+
utils.Debug(fmt.Sprintf("metricName: %s, durationMs: %f\n",
44+
target.MetricName, target.DurationMs))
3445
if len(target.MetricName) == 0 {
3546
return errors.New("empty metricName")
3647
}
@@ -46,27 +57,26 @@ func (env *Env) createEventHttp() http.HandlerFunc {
4657
err := mapRequestToStruct(r, req)
4758

4859
if err != nil {
49-
env.Logger.Printf("[debug] internal error %s", err)
60+
utils.Ok(err)
5061
response.Status = StatusIntErr
5162
return
5263
}
5364

5465
err = env.DBEngine.SaveEvent(req.MetricName, req.Project, req.DurationMs)
5566
if err != nil {
56-
env.Logger.Printf("[error] %s\n", err)
67+
utils.Ok(err)
5768
response.Status = StatusIntErr
5869
return
5970
}
6071

61-
env.Logger.Printf("[debug] requested params: %s", r.Body)
72+
utils.Debug(fmt.Sprintf("requested params: %s", r.Body))
6273
saved := struct {
6374
Saved bool `json:"saved"`
6475
}{true}
6576
response.Status = StatusOk
6677
response.JsonBody, err = json.Marshal(saved)
67-
78+
utils.Ok(err)
6879
}
69-
7080
}
7181

7282
func (env *Env) getEventsHttp() http.HandlerFunc {
@@ -80,20 +90,16 @@ func (env *Env) getEventsHttp() http.HandlerFunc {
8090
params := mux.Vars(r)
8191

8292
metricTimeFrom, err := time.Parse(timeLayout, params["metricTimeFrom"])
83-
if err != nil {
84-
env.Logger.Printf("[error] %s", err)
93+
if badRequest(err, response) {
94+
return
8595
}
8696

8797
metricTimeTo, err := time.Parse(timeLayout, params["metricTimeTo"])
88-
if err != nil {
89-
env.Logger.Printf("[error] %s", err)
90-
}
91-
92-
if err != nil {
93-
response.Status = StatusErr
98+
if badRequest(err, response) {
99+
return
94100
}
95101

96-
env.Logger.Printf("[debug] %s -> %s", metricTimeFrom, metricTimeTo)
102+
utils.Debug(fmt.Sprintf("%s -> %s", metricTimeFrom, metricTimeTo))
97103
events, err := env.DBEngine.FilterEvents(
98104
metricTimeFrom,
99105
metricTimeTo,

engine/event_test.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,8 @@ func TestGetEventsHttp(t *testing.T) {
7575
ExpCode: 403,
7676
MetricName: "metricName",
7777
Project: "someProject",
78-
MetricTimeFrom: "2019-09-02 00:01:00",
79-
MetricTimeTo: "2019-09-02 00:02:00",
78+
MetricTimeFrom: "2019-09-02T00:01:00",
79+
MetricTimeTo: "2019-09-02T00:02:00",
8080
GroupBy: "minutes",
8181
},
8282
{
@@ -85,8 +85,8 @@ func TestGetEventsHttp(t *testing.T) {
8585
Login: validLogin,
8686
MetricName: "metricName",
8787
Project: "someProject",
88-
MetricTimeFrom: "2019-09-02 00:01:00",
89-
MetricTimeTo: "2019-09-02 00:02:00",
88+
MetricTimeFrom: "2019-09-02T00:01:00",
89+
MetricTimeTo: "2019-09-02T00:02:00",
9090
GroupBy: "minutes",
9191
},
9292
}

engine/logging.go

-5
This file was deleted.

engine/project.go

+4-2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ package engine
22

33
import (
44
"encoding/json"
5+
"fmt"
6+
"github.com/khyurri/speedlog/utils"
57
"net/http"
68
)
79

@@ -19,7 +21,7 @@ func (env *Env) createProjectHttp() http.HandlerFunc {
1921
req := &request{}
2022
dec := json.NewDecoder(r.Body)
2123
err := dec.Decode(req)
22-
env.Logger.Println("[debug] trying to create project")
24+
utils.Debug(fmt.Sprintf("trying to create project"))
2325
if len(req.Title) == 0 {
2426
response.Status = StatusErr
2527
return
@@ -28,7 +30,7 @@ func (env *Env) createProjectHttp() http.HandlerFunc {
2830
if err != nil {
2931
// TODO: check if dublicate
3032
response.Status = StatusErr
31-
env.Logger.Printf("[error] create project %s", err)
33+
utils.Debug(fmt.Sprintf("create project %s", err))
3234
}
3335
}
3436
}

engine/response.go

+2-5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package engine
22

33
import (
4+
"github.com/khyurri/speedlog/utils"
45
"log"
56
"net/http"
67
)
@@ -43,11 +44,7 @@ func (r *Resp) Render(w http.ResponseWriter) {
4344
r.setHeader(w)
4445
w.Header().Set("Content-Type", "application/json")
4546
_, err := w.Write(r.JsonBody)
46-
if err != nil {
47-
// TODO: fix null pointer exception
48-
// r.Logger.Fatal(err)
49-
return
50-
}
47+
utils.Ok(err)
5148
}
5249

5350
// returns struct ready for rendering with text message

engine/user.go

+5-5
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ package engine
33
import (
44
"encoding/json"
55
"errors"
6+
"fmt"
67
"github.com/dgrijalva/jwt-go"
8+
"github.com/khyurri/speedlog/utils"
79
"golang.org/x/crypto/bcrypt"
810
"net/http"
911
)
@@ -25,9 +27,7 @@ func tokenResp(token string, response *Resp) {
2527

2628
func (env *Env) AddUser(login, password string) (err error) {
2729
err = env.DBEngine.AddUser(login, password)
28-
if err != nil {
29-
Logger.Printf("[error] cannot create user %s with password %s", login, password)
30-
}
30+
utils.Ok(errors.New(fmt.Sprintf("cannot create user %s with password %s", login, password)))
3131
return
3232
}
3333

@@ -44,15 +44,15 @@ func (env *Env) authenticateHttp() http.HandlerFunc {
4444

4545
if r.Body == nil {
4646
_r, _ := json.Marshal(r)
47-
env.Logger.Printf("[error] request body is nil. Request: %s", _r)
47+
utils.Ok(errors.New(fmt.Sprintf("request body is nil. Request: %s", _r)))
4848
response.Status = StatusErr
4949
return
5050
}
5151
decoder := json.NewDecoder(r.Body)
5252
u := &request{}
5353
err := decoder.Decode(&u)
5454
if err != nil {
55-
env.Logger.Printf("[error] invalid login request: %v", err)
55+
utils.Ok(errors.New(fmt.Sprintf("invalid login request: %+v", err)))
5656
response.Status = StatusIntErr
5757
return
5858
}

main.go

+6-3
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ type params struct {
2828
Project string `arg:"-r" help:"Modes runserver, addproject. Project title."`
2929
Login string `arg:"-l" help:"Mode adduser. Login for new user"`
3030
Password string `arg:"-p" help:"Mode adduser. Password for new user"`
31+
Verbose bool `arg:"-v" help:"All modes. Add debug messages"`
3132
}
3233

3334
func parseTZ(timezone string) (*time.Location, error) {
@@ -47,9 +48,11 @@ func addProjectMode(cliParams *params, dbEngine mongo.DataStore) (err error) {
4748
}
4849

4950
// init logger
50-
func initLogger() {
51+
func initLogger(verbose bool) {
5152
log.SetFlags(log.LstdFlags | log.Lmicroseconds | log.Llongfile)
52-
utils.Level = utils.LG_DEBUG
53+
if verbose {
54+
utils.Level = utils.LG_DEBUG
55+
}
5356
}
5457

5558
func main() {
@@ -67,7 +70,7 @@ func main() {
6770

6871
arg.MustParse(cliParams)
6972

70-
initLogger()
73+
initLogger(cliParams.Verbose)
7174

7275
dbEngine, err := mongo.New("speedlog", cliParams.Mongo)
7376
utils.Ok(err)

0 commit comments

Comments
 (0)