Начальный импорт

main v0.0.0
parent 5bde86ae3b
commit d65b354285
  1. 14
      go.mod
  2. 20
      go.sum
  3. 62
      logger.go

@ -0,0 +1,14 @@
module github.com/PCManiac/logrus_init
go 1.17
require (
github.com/caarlos0/env/v6 v6.10.0
github.com/sirupsen/logrus v1.8.1
)
require (
github.com/stretchr/testify v1.4.0 // indirect
golang.org/x/sys v0.0.0-20211109184856-51b60fd695b3 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
)

@ -0,0 +1,20 @@
github.com/caarlos0/env/v6 v6.10.0 h1:lA7sxiGArZ2KkiqpOQNf8ERBRWI+v8MWIH+eGjSN22I=
github.com/caarlos0/env/v6 v6.10.0/go.mod h1:hvp/ryKXKipEkcuYjs9mI4bBCg+UI0Yhgm5Zu0ddvwc=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE=
github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20211109184856-51b60fd695b3 h1:T6tyxxvHMj2L1R2kZg0uNMpS8ZhB9lRa9XRGTCSA65w=
golang.org/x/sys v0.0.0-20211109184856-51b60fd695b3/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=

@ -0,0 +1,62 @@
package logrus_init
import (
"os"
"github.com/caarlos0/env/v6"
"github.com/sirupsen/logrus"
)
func init() {
InitLogger()
}
type config struct {
Output string `env:"LOG_OUTPUT" envDefault:"stdout"`
FileName string `env:"LOG_FILENAME" envDefault:"app.log"`
Formatter string `env:"LOG_FORMATTER" envDefault:"json"`
Level string `env:"LOG_LEVEL" envDefault:"error"`
}
func InitLogger() {
log := logrus.StandardLogger()
var cfg config
if err := env.Parse(&cfg); err != nil {
log.Error("log env vars parse error", err)
}
logFilename := cfg.FileName
switch cfg.Output {
case "file":
LogOutputFile, err := os.OpenFile(logFilename, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
if err == nil {
log.SetOutput(LogOutputFile)
} else {
log.SetOutput(os.Stdout)
}
case "stderr":
log.SetOutput(os.Stderr)
case "stdin":
log.SetOutput(os.Stdin)
case "stdout":
fallthrough
default:
log.SetOutput(os.Stdout)
}
switch cfg.Formatter {
case "text":
log.SetFormatter(&logrus.TextFormatter{})
case "json":
fallthrough
default:
log.SetFormatter(&logrus.JSONFormatter{})
}
if lvl, err := logrus.ParseLevel(cfg.Level); err != nil {
log.SetLevel(logrus.DebugLevel)
} else {
log.SetLevel(lvl)
}
}
Loading…
Cancel
Save