Skip to content

Commit 2d5d38d

Browse files
committed
fix(server): gorm logging
- add support for LOG_LEVEL env var (Resolves #271)
1 parent 0dd06d9 commit 2d5d38d

File tree

5 files changed

+82
-59
lines changed

5 files changed

+82
-59
lines changed

server/db/providers/sql/provider.go

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,13 @@ package sql
22

33
import (
44
"fmt"
5-
"log"
6-
"os"
75
"time"
86

97
"github.com/authorizerdev/authorizer/server/constants"
108
"github.com/authorizerdev/authorizer/server/db/models"
119
"github.com/authorizerdev/authorizer/server/memorystore"
1210
"github.com/glebarez/sqlite"
11+
"github.com/sirupsen/logrus"
1312
"gorm.io/driver/mysql"
1413
"gorm.io/driver/postgres"
1514
"gorm.io/driver/sqlserver"
@@ -37,12 +36,12 @@ func NewProvider() (*provider, error) {
3736
var sqlDB *gorm.DB
3837
var err error
3938
customLogger := logger.New(
40-
log.New(os.Stdout, "\r\n", log.LstdFlags), // io writer
39+
logrus.StandardLogger(),
4140
logger.Config{
42-
SlowThreshold: time.Second, // Slow SQL threshold
43-
LogLevel: logger.Silent, // Log level
44-
IgnoreRecordNotFoundError: true, // Ignore ErrRecordNotFound error for logger
45-
Colorful: false, // Disable color
41+
SlowThreshold: time.Second, // Slow SQL threshold
42+
LogLevel: logger.Error, // Log level
43+
IgnoreRecordNotFoundError: true, // Ignore ErrRecordNotFound error for logger
44+
Colorful: false, // Disable color
4645
},
4746
)
4847

server/go.mod

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,8 @@ require (
2525
github.com/stretchr/testify v1.8.0
2626
github.com/vektah/gqlparser/v2 v2.5.1
2727
go.mongodb.org/mongo-driver v1.8.1
28-
golang.org/x/crypto v0.0.0-20221005025214-4161e89ecf1b
29-
golang.org/x/net v0.0.0-20220930213112-107f3e3c3b0b // indirect
28+
golang.org/x/crypto v0.3.0
3029
golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914
31-
golang.org/x/sys v0.0.0-20220928140112-f11e5e49a4ec // indirect
3230
google.golang.org/appengine v1.6.7 // indirect
3331
google.golang.org/protobuf v1.28.1 // indirect
3432
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect

server/go.sum

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -449,6 +449,8 @@ golang.org/x/crypto v0.0.0-20220511200225-c6db032c6c88/go.mod h1:IxCIyHEi3zRg3s0
449449
golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
450450
golang.org/x/crypto v0.0.0-20221005025214-4161e89ecf1b h1:huxqepDufQpLLIRXiVkTvnxrzJlpwmIWAObmcCcUFr0=
451451
golang.org/x/crypto v0.0.0-20221005025214-4161e89ecf1b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
452+
golang.org/x/crypto v0.3.0 h1:a06MkbcxBrEFc0w0QIZWXrH/9cCX6KJyWbBOIwAn+7A=
453+
golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
452454
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
453455
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
454456
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@@ -524,6 +526,8 @@ golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su
524526
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
525527
golang.org/x/net v0.0.0-20220930213112-107f3e3c3b0b h1:uKO3Js8lXGjpjdc4J3rqs0/Ex5yDKUGfk43tTYWVLas=
526528
golang.org/x/net v0.0.0-20220930213112-107f3e3c3b0b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
529+
golang.org/x/net v0.2.0 h1:sZfSu1wtKLGlWI4ZZayP0ck9Y73K1ynO6gqzTdBVdPU=
530+
golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
527531
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
528532
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
529533
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -598,10 +602,13 @@ golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBc
598602
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
599603
golang.org/x/sys v0.0.0-20220928140112-f11e5e49a4ec h1:BkDtF2Ih9xZ7le9ndzTA7KJow28VbQW3odyk/8drmuI=
600604
golang.org/x/sys v0.0.0-20220928140112-f11e5e49a4ec/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
605+
golang.org/x/sys v0.2.0 h1:ljd4t30dBnAvMZaQCevtY0xLLD0A+bRZXbgLMLU1F/A=
606+
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
601607
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
602608
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
603609
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
604610
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
611+
golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
605612
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
606613
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
607614
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -612,6 +619,8 @@ golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
612619
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
613620
golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
614621
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
622+
golang.org/x/text v0.4.0 h1:BrVqGRd7+k1DiOgtnFvAkoQEWQvBc25ouMJM6429SFg=
623+
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
615624
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
616625
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
617626
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=

server/logs/logs.go

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package logs
2+
3+
import (
4+
"os"
5+
6+
"github.com/sirupsen/logrus"
7+
log "github.com/sirupsen/logrus"
8+
)
9+
10+
// LogUTCFormatter hels in setting UTC time format for the logs
11+
type LogUTCFormatter struct {
12+
log.Formatter
13+
}
14+
15+
// Format helps fomratting time to UTC
16+
func (u LogUTCFormatter) Format(e *log.Entry) ([]byte, error) {
17+
e.Time = e.Time.UTC()
18+
return u.Formatter.Format(e)
19+
}
20+
21+
func InitLog(cliLogLevel string) *log.Logger {
22+
// global log level
23+
logrus.SetFormatter(LogUTCFormatter{&logrus.JSONFormatter{}})
24+
25+
// log instance for gin server
26+
log := logrus.New()
27+
log.SetFormatter(LogUTCFormatter{&logrus.JSONFormatter{}})
28+
29+
if cliLogLevel == "" {
30+
cliLogLevel = os.Getenv("LOG_LEVEL")
31+
}
32+
33+
var logLevel logrus.Level
34+
switch cliLogLevel {
35+
case "debug":
36+
logLevel = logrus.DebugLevel
37+
case "info":
38+
logLevel = logrus.InfoLevel
39+
case "warn":
40+
logLevel = logrus.WarnLevel
41+
case "error":
42+
logLevel = logrus.ErrorLevel
43+
case "fatal":
44+
logLevel = logrus.FatalLevel
45+
case "panic":
46+
logLevel = logrus.PanicLevel
47+
default:
48+
logLevel = logrus.InfoLevel
49+
}
50+
// set log level globally
51+
logrus.SetLevel(logLevel)
52+
53+
// set log level for go-gin middleware
54+
log.SetLevel(logLevel)
55+
56+
// show file path in log for debug or other log levels.
57+
if logLevel != logrus.InfoLevel {
58+
logrus.SetReportCaller(true)
59+
log.SetReportCaller(true)
60+
}
61+
62+
return log
63+
}

server/main.go

Lines changed: 3 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -3,32 +3,20 @@ package main
33
import (
44
"flag"
55

6-
"github.com/sirupsen/logrus"
7-
log "github.com/sirupsen/logrus"
8-
96
"github.com/authorizerdev/authorizer/server/cli"
107
"github.com/authorizerdev/authorizer/server/constants"
118
"github.com/authorizerdev/authorizer/server/db"
129
"github.com/authorizerdev/authorizer/server/env"
10+
"github.com/authorizerdev/authorizer/server/logs"
1311
"github.com/authorizerdev/authorizer/server/memorystore"
1412
"github.com/authorizerdev/authorizer/server/oauth"
13+
"github.com/authorizerdev/authorizer/server/refs"
1514
"github.com/authorizerdev/authorizer/server/routes"
1615
)
1716

1817
// VERSION is used to define the version of authorizer from build tags
1918
var VERSION string
2019

21-
// LogUTCFormatter hels in setting UTC time format for the logs
22-
type LogUTCFormatter struct {
23-
log.Formatter
24-
}
25-
26-
// Format helps fomratting time to UTC
27-
func (u LogUTCFormatter) Format(e *log.Entry) ([]byte, error) {
28-
e.Time = e.Time.UTC()
29-
return u.Formatter.Format(e)
30-
}
31-
3220
func main() {
3321
cli.ARG_DB_URL = flag.String("database_url", "", "Database connection string")
3422
cli.ARG_DB_TYPE = flag.String("database_type", "", "Database type, possible values are postgres,mysql,sqlite")
@@ -37,41 +25,7 @@ func main() {
3725
cli.ARG_REDIS_URL = flag.String("redis_url", "", "Redis connection string")
3826
flag.Parse()
3927

40-
// global log level
41-
logrus.SetFormatter(LogUTCFormatter{&logrus.JSONFormatter{}})
42-
43-
// log instance for gin server
44-
log := logrus.New()
45-
log.SetFormatter(LogUTCFormatter{&logrus.JSONFormatter{}})
46-
47-
var logLevel logrus.Level
48-
switch *cli.ARG_LOG_LEVEL {
49-
case "debug":
50-
logLevel = logrus.DebugLevel
51-
case "info":
52-
logLevel = logrus.InfoLevel
53-
case "warn":
54-
logLevel = logrus.WarnLevel
55-
case "error":
56-
logLevel = logrus.ErrorLevel
57-
case "fatal":
58-
logLevel = logrus.FatalLevel
59-
case "panic":
60-
logLevel = logrus.PanicLevel
61-
default:
62-
logLevel = logrus.InfoLevel
63-
}
64-
// set log level globally
65-
logrus.SetLevel(logLevel)
66-
67-
// set log level for go-gin middleware
68-
log.SetLevel(logLevel)
69-
70-
// show file path in log for debug or other log levels.
71-
if logLevel != logrus.InfoLevel {
72-
logrus.SetReportCaller(true)
73-
log.SetReportCaller(true)
74-
}
28+
log := logs.InitLog(refs.StringValue(cli.ARG_LOG_LEVEL))
7529

7630
constants.VERSION = VERSION
7731

0 commit comments

Comments
 (0)