improved logging
This commit is contained in:
parent
f8407162ad
commit
05b41cedce
81 changed files with 9802 additions and 279 deletions
135
pkg/cmd/cmd.go
135
pkg/cmd/cmd.go
|
|
@ -6,20 +6,22 @@ import (
|
|||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"git.giftfish.de/ston1th/docstore/pkg/core"
|
||||
"git.giftfish.de/ston1th/docstore/pkg/db"
|
||||
"git.giftfish.de/ston1th/docstore/pkg/log"
|
||||
"git.giftfish.de/ston1th/docstore/pkg/scan"
|
||||
"git.giftfish.de/ston1th/docstore/pkg/server"
|
||||
"git.giftfish.de/ston1th/godrop/v2"
|
||||
"github.com/urfave/cli"
|
||||
stdlog "log"
|
||||
"net"
|
||||
"os"
|
||||
"os/signal"
|
||||
"path/filepath"
|
||||
"strconv"
|
||||
"syscall"
|
||||
"time"
|
||||
|
||||
"git.giftfish.de/ston1th/docstore/pkg/core"
|
||||
"git.giftfish.de/ston1th/docstore/pkg/db"
|
||||
"git.giftfish.de/ston1th/docstore/pkg/scan"
|
||||
"git.giftfish.de/ston1th/docstore/pkg/server"
|
||||
"git.giftfish.de/ston1th/godrop/v2"
|
||||
"github.com/go-logr/logr"
|
||||
"github.com/go-logr/zerologr"
|
||||
"github.com/rs/zerolog"
|
||||
"github.com/urfave/cli"
|
||||
)
|
||||
|
||||
const (
|
||||
|
|
@ -72,15 +74,18 @@ func initServer(cfg *core.Config) (err error) {
|
|||
return
|
||||
}
|
||||
|
||||
log.InitLogger(cfg)
|
||||
log, err := logFileLogger(cfg)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
cfg.DataDir = filepath.Join(cfg.RunDir, core.DataDir)
|
||||
debugCfg := new(core.Config)
|
||||
*debugCfg = *cfg
|
||||
debugCfg.Secret = "***hidden***"
|
||||
log.Debugf("docstore config: %+v", debugCfg)
|
||||
debugCfg.Secret = "[redacted]"
|
||||
log.V(2).Info("docstore config", "cfg", debugCfg)
|
||||
|
||||
scanner, err := scan.New(cfg)
|
||||
scanner, err := scan.New(log.WithName("scanner"), cfg)
|
||||
if err != nil {
|
||||
return errors.New("scanner: " + err.Error())
|
||||
}
|
||||
|
|
@ -93,25 +98,21 @@ func initServer(cfg *core.Config) (err error) {
|
|||
return
|
||||
}
|
||||
|
||||
srv := server.NewHTTPServer(cfg, l, scanner)
|
||||
srv := server.NewHTTPServer(log, cfg, l, scanner)
|
||||
err = srv.Start()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
log.Println("docstore " + cfg.Version + " started")
|
||||
log.Info("docstore started", "version", cfg.Version)
|
||||
sigs := make(chan os.Signal, 1)
|
||||
signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)
|
||||
sig := <-sigs
|
||||
log.Println("signal: " + sig.String())
|
||||
go func() {
|
||||
time.Sleep(time.Second * 20)
|
||||
log.Fatal("stop timed out: killing")
|
||||
}()
|
||||
<-sigs
|
||||
log.Info("docstore shutdown initiated")
|
||||
err = srv.Stop()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
log.Error(err, "shutdown")
|
||||
}
|
||||
log.Println("docstore stopped")
|
||||
log.Info("docstore shutdown completed")
|
||||
return
|
||||
}
|
||||
|
||||
|
|
@ -127,6 +128,9 @@ func loadConfig() error {
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if config.Debug {
|
||||
zerolog.SetGlobalLevel(zerolog.TraceLevel)
|
||||
}
|
||||
if config.RunDir == "" {
|
||||
config.RunDir = defRunDir
|
||||
}
|
||||
|
|
@ -154,6 +158,47 @@ func loadConfig() error {
|
|||
return file.Close()
|
||||
}
|
||||
|
||||
func fatal(err error) {
|
||||
log.Error(err, "init failed")
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
var (
|
||||
log logr.Logger
|
||||
zl zerolog.Logger
|
||||
)
|
||||
|
||||
func logFileLogger(cfg *core.Config) (l logr.Logger, err error) {
|
||||
f, err := os.OpenFile(filepath.Join(cfg.DataDir, cfg.LogFile), os.O_RDWR|os.O_CREATE|os.O_APPEND, 0o640)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
zln := zl.Output(f)
|
||||
l = zerologr.New(&zln)
|
||||
return
|
||||
}
|
||||
|
||||
func init() {
|
||||
//zerolog.TimeFieldFormat = zerolog.TimeFormatUnixMs
|
||||
zerolog.CallerMarshalFunc = func(pc uintptr, file string, line int) string {
|
||||
short := file
|
||||
for i := len(file) - 1; i > 0; i-- {
|
||||
if file[i] == '/' {
|
||||
short = file[i+1:]
|
||||
break
|
||||
}
|
||||
}
|
||||
file = short
|
||||
return file + ":" + strconv.Itoa(line)
|
||||
}
|
||||
//zerologr.NameFieldName = "logger"
|
||||
//zerologr.NameSeparator = "/"
|
||||
zerologr.VerbosityFieldName = ""
|
||||
zl = zerolog.New(os.Stderr)
|
||||
zl = zl.With().Caller().Timestamp().Logger()
|
||||
log = zerologr.New(&zl)
|
||||
}
|
||||
|
||||
func Run(version string) {
|
||||
app := cli.NewApp()
|
||||
app.Name = "docstore"
|
||||
|
|
@ -167,11 +212,11 @@ func Run(version string) {
|
|||
Action: func(c *cli.Context) error {
|
||||
config.Langs = c.StringSlice("langs")
|
||||
if err := loadConfig(); err != nil {
|
||||
stdlog.Fatal("server: ", err)
|
||||
fatal(err)
|
||||
}
|
||||
config.Version = app.Version
|
||||
if err := initServer(&config); err != nil {
|
||||
stdlog.Fatal("server: ", err)
|
||||
fatal(err)
|
||||
}
|
||||
return nil
|
||||
},
|
||||
|
|
@ -182,30 +227,30 @@ func Run(version string) {
|
|||
Flags: defaultFlags(nil),
|
||||
Action: func(c *cli.Context) error {
|
||||
if err := loadConfig(); err != nil {
|
||||
stdlog.Fatal("reset: ", err)
|
||||
fatal(err)
|
||||
}
|
||||
DB, err := db.NewPlain(&config)
|
||||
DB, err := db.NewPlain(log.WithName("db"), &config)
|
||||
if err != nil {
|
||||
stdlog.Fatal("reset: ", err)
|
||||
fatal(err)
|
||||
}
|
||||
u, err := DB.GetUser()
|
||||
if err != nil {
|
||||
stdlog.Fatal("reset: ", err)
|
||||
fatal(err)
|
||||
}
|
||||
fmt.Println("username:", u.Username)
|
||||
pw, err := password()
|
||||
if err != nil {
|
||||
stdlog.Fatal("reset: ", err)
|
||||
fatal(err)
|
||||
}
|
||||
if err = DB.UpdateUserPassword(pw); err != nil {
|
||||
stdlog.Fatal("reset: ", err)
|
||||
fatal(err)
|
||||
}
|
||||
fmt.Println("password:", pw)
|
||||
if err = DB.UpdateUserSecret(""); err != nil {
|
||||
stdlog.Fatal("reset: ", err)
|
||||
fatal(err)
|
||||
}
|
||||
if err = DB.Close(); err != nil {
|
||||
stdlog.Fatal("reset: ", err)
|
||||
fatal(err)
|
||||
}
|
||||
return nil
|
||||
},
|
||||
|
|
@ -220,25 +265,25 @@ func Run(version string) {
|
|||
err error
|
||||
)
|
||||
if err = loadConfig(); err != nil {
|
||||
stdlog.Fatal("dump: ", err)
|
||||
fatal(err)
|
||||
}
|
||||
if dumpFile != "-" {
|
||||
file, err = os.OpenFile(dumpFile, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0o640)
|
||||
if err != nil {
|
||||
stdlog.Fatal("dump: ", err)
|
||||
fatal(err)
|
||||
}
|
||||
}
|
||||
DB, err := db.NewPlain(&config)
|
||||
DB, err := db.NewPlain(log.WithName("db"), &config)
|
||||
if err != nil {
|
||||
stdlog.Fatal("dump: ", err)
|
||||
fatal(err)
|
||||
}
|
||||
if err = DB.Dump(file); err != nil {
|
||||
stdlog.Fatal("dump: ", err)
|
||||
fatal(err)
|
||||
}
|
||||
file.Close()
|
||||
err = DB.Close()
|
||||
if err != nil {
|
||||
stdlog.Fatal("dump: ", err)
|
||||
fatal(err)
|
||||
}
|
||||
return nil
|
||||
},
|
||||
|
|
@ -253,25 +298,25 @@ func Run(version string) {
|
|||
err error
|
||||
)
|
||||
if err = loadConfig(); err != nil {
|
||||
stdlog.Fatal("restore: ", err)
|
||||
fatal(err)
|
||||
}
|
||||
if dumpFile != "-" {
|
||||
file, err = os.Open(dumpFile)
|
||||
if err != nil {
|
||||
stdlog.Fatal("restore: ", err)
|
||||
fatal(err)
|
||||
}
|
||||
}
|
||||
DB, err := db.NewPlain(&config)
|
||||
DB, err := db.NewPlain(log.WithName("db"), &config)
|
||||
if err != nil {
|
||||
stdlog.Fatal("restore: ", err)
|
||||
fatal(err)
|
||||
}
|
||||
if err = DB.Restore(file); err != nil {
|
||||
stdlog.Fatal("restore: ", err)
|
||||
fatal(err)
|
||||
}
|
||||
file.Close()
|
||||
err = DB.Close()
|
||||
if err != nil {
|
||||
stdlog.Fatal("restore: ", err)
|
||||
fatal(err)
|
||||
}
|
||||
return nil
|
||||
},
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue