diff --git a/server/db/providers/sql/provider.go b/server/db/providers/sql/provider.go index b077b6b..827d0dc 100644 --- a/server/db/providers/sql/provider.go +++ b/server/db/providers/sql/provider.go @@ -2,14 +2,13 @@ package sql import ( "fmt" - "log" - "os" "time" "github.com/authorizerdev/authorizer/server/constants" "github.com/authorizerdev/authorizer/server/db/models" "github.com/authorizerdev/authorizer/server/memorystore" "github.com/glebarez/sqlite" + "github.com/sirupsen/logrus" "gorm.io/driver/mysql" "gorm.io/driver/postgres" "gorm.io/driver/sqlserver" @@ -37,12 +36,12 @@ func NewProvider() (*provider, error) { var sqlDB *gorm.DB var err error customLogger := logger.New( - log.New(os.Stdout, "\r\n", log.LstdFlags), // io writer + logrus.StandardLogger(), logger.Config{ - SlowThreshold: time.Second, // Slow SQL threshold - LogLevel: logger.Silent, // Log level - IgnoreRecordNotFoundError: true, // Ignore ErrRecordNotFound error for logger - Colorful: false, // Disable color + SlowThreshold: time.Second, // Slow SQL threshold + LogLevel: logger.Error, // Log level + IgnoreRecordNotFoundError: true, // Ignore ErrRecordNotFound error for logger + Colorful: false, // Disable color }, ) diff --git a/server/go.mod b/server/go.mod index fbcf5ab..fa5dba2 100644 --- a/server/go.mod +++ b/server/go.mod @@ -25,10 +25,8 @@ require ( github.com/stretchr/testify v1.8.0 github.com/vektah/gqlparser/v2 v2.5.1 go.mongodb.org/mongo-driver v1.8.1 - golang.org/x/crypto v0.0.0-20221005025214-4161e89ecf1b - golang.org/x/net v0.0.0-20220930213112-107f3e3c3b0b // indirect + golang.org/x/crypto v0.3.0 golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914 - golang.org/x/sys v0.0.0-20220928140112-f11e5e49a4ec // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/protobuf v1.28.1 // indirect gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect diff --git a/server/go.sum b/server/go.sum index f1a0545..ffe2596 100644 --- a/server/go.sum +++ b/server/go.sum @@ -449,6 +449,8 @@ golang.org/x/crypto v0.0.0-20220511200225-c6db032c6c88/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20221005025214-4161e89ecf1b h1:huxqepDufQpLLIRXiVkTvnxrzJlpwmIWAObmcCcUFr0= golang.org/x/crypto v0.0.0-20221005025214-4161e89ecf1b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.3.0 h1:a06MkbcxBrEFc0w0QIZWXrH/9cCX6KJyWbBOIwAn+7A= +golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= 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 golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220930213112-107f3e3c3b0b h1:uKO3Js8lXGjpjdc4J3rqs0/Ex5yDKUGfk43tTYWVLas= golang.org/x/net v0.0.0-20220930213112-107f3e3c3b0b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.2.0 h1:sZfSu1wtKLGlWI4ZZayP0ck9Y73K1ynO6gqzTdBVdPU= +golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= 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 golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220928140112-f11e5e49a4ec h1:BkDtF2Ih9xZ7le9ndzTA7KJow28VbQW3odyk/8drmuI= golang.org/x/sys v0.0.0-20220928140112-f11e5e49a4ec/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.2.0 h1:ljd4t30dBnAvMZaQCevtY0xLLD0A+bRZXbgLMLU1F/A= +golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 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= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.4.0 h1:BrVqGRd7+k1DiOgtnFvAkoQEWQvBc25ouMJM6429SFg= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= diff --git a/server/logs/logs.go b/server/logs/logs.go new file mode 100644 index 0000000..9773b39 --- /dev/null +++ b/server/logs/logs.go @@ -0,0 +1,63 @@ +package logs + +import ( + "os" + + "github.com/sirupsen/logrus" + log "github.com/sirupsen/logrus" +) + +// LogUTCFormatter hels in setting UTC time format for the logs +type LogUTCFormatter struct { + log.Formatter +} + +// Format helps fomratting time to UTC +func (u LogUTCFormatter) Format(e *log.Entry) ([]byte, error) { + e.Time = e.Time.UTC() + return u.Formatter.Format(e) +} + +func InitLog(cliLogLevel string) *log.Logger { + // global log level + logrus.SetFormatter(LogUTCFormatter{&logrus.JSONFormatter{}}) + + // log instance for gin server + log := logrus.New() + log.SetFormatter(LogUTCFormatter{&logrus.JSONFormatter{}}) + + if cliLogLevel == "" { + cliLogLevel = os.Getenv("LOG_LEVEL") + } + + var logLevel logrus.Level + switch cliLogLevel { + case "debug": + logLevel = logrus.DebugLevel + case "info": + logLevel = logrus.InfoLevel + case "warn": + logLevel = logrus.WarnLevel + case "error": + logLevel = logrus.ErrorLevel + case "fatal": + logLevel = logrus.FatalLevel + case "panic": + logLevel = logrus.PanicLevel + default: + logLevel = logrus.InfoLevel + } + // set log level globally + logrus.SetLevel(logLevel) + + // set log level for go-gin middleware + log.SetLevel(logLevel) + + // show file path in log for debug or other log levels. + if logLevel != logrus.InfoLevel { + logrus.SetReportCaller(true) + log.SetReportCaller(true) + } + + return log +} diff --git a/server/main.go b/server/main.go index fa397c8..bb2269b 100644 --- a/server/main.go +++ b/server/main.go @@ -3,32 +3,20 @@ package main import ( "flag" - "github.com/sirupsen/logrus" - log "github.com/sirupsen/logrus" - "github.com/authorizerdev/authorizer/server/cli" "github.com/authorizerdev/authorizer/server/constants" "github.com/authorizerdev/authorizer/server/db" "github.com/authorizerdev/authorizer/server/env" + "github.com/authorizerdev/authorizer/server/logs" "github.com/authorizerdev/authorizer/server/memorystore" "github.com/authorizerdev/authorizer/server/oauth" + "github.com/authorizerdev/authorizer/server/refs" "github.com/authorizerdev/authorizer/server/routes" ) // VERSION is used to define the version of authorizer from build tags var VERSION string -// LogUTCFormatter hels in setting UTC time format for the logs -type LogUTCFormatter struct { - log.Formatter -} - -// Format helps fomratting time to UTC -func (u LogUTCFormatter) Format(e *log.Entry) ([]byte, error) { - e.Time = e.Time.UTC() - return u.Formatter.Format(e) -} - func main() { cli.ARG_DB_URL = flag.String("database_url", "", "Database connection string") cli.ARG_DB_TYPE = flag.String("database_type", "", "Database type, possible values are postgres,mysql,sqlite") @@ -37,41 +25,7 @@ func main() { cli.ARG_REDIS_URL = flag.String("redis_url", "", "Redis connection string") flag.Parse() - // global log level - logrus.SetFormatter(LogUTCFormatter{&logrus.JSONFormatter{}}) - - // log instance for gin server - log := logrus.New() - log.SetFormatter(LogUTCFormatter{&logrus.JSONFormatter{}}) - - var logLevel logrus.Level - switch *cli.ARG_LOG_LEVEL { - case "debug": - logLevel = logrus.DebugLevel - case "info": - logLevel = logrus.InfoLevel - case "warn": - logLevel = logrus.WarnLevel - case "error": - logLevel = logrus.ErrorLevel - case "fatal": - logLevel = logrus.FatalLevel - case "panic": - logLevel = logrus.PanicLevel - default: - logLevel = logrus.InfoLevel - } - // set log level globally - logrus.SetLevel(logLevel) - - // set log level for go-gin middleware - log.SetLevel(logLevel) - - // show file path in log for debug or other log levels. - if logLevel != logrus.InfoLevel { - logrus.SetReportCaller(true) - log.SetReportCaller(true) - } + log := logs.InitLog(refs.StringValue(cli.ARG_LOG_LEVEL)) constants.VERSION = VERSION