mirror of
https://github.com/gregtwallace/apc-p15-tool.git
synced 2025-06-07 20:36:51 +00:00
simplify logging
This commit is contained in:
parent
2c4e3df0a5
commit
201aedce1c
8 changed files with 36 additions and 93 deletions
pkg/app
|
@ -3,11 +3,12 @@ package app
|
|||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"io"
|
||||
"log"
|
||||
"os"
|
||||
|
||||
"github.com/peterbourgon/ff/v4"
|
||||
"github.com/peterbourgon/ff/v4/ffhelp"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -16,21 +17,24 @@ const (
|
|||
|
||||
// struct for receivers to use common app pieces
|
||||
type app struct {
|
||||
logger *zap.SugaredLogger
|
||||
cmd *ff.Command
|
||||
config *config
|
||||
stdLogger *log.Logger
|
||||
debugLogger *log.Logger
|
||||
errLogger *log.Logger
|
||||
cmd *ff.Command
|
||||
config *config
|
||||
}
|
||||
|
||||
// actual application start
|
||||
func Start(args []string) {
|
||||
// make app w/ initial logger pre-config
|
||||
initLogLevel := "debug"
|
||||
// make app w/ logger
|
||||
app := &app{
|
||||
logger: makeZapLogger(&initLogLevel),
|
||||
stdLogger: log.New(os.Stdout, "", 0),
|
||||
debugLogger: log.New(io.Discard, "", 0), // discard debug logging by default
|
||||
errLogger: log.New(os.Stderr, "", 0),
|
||||
}
|
||||
|
||||
// log start
|
||||
app.logger.Infof("apc-p15-tool v%s", appVersion)
|
||||
app.stdLogger.Printf("apc-p15-tool v%s", appVersion)
|
||||
|
||||
// get os.Args if args unspecified in func
|
||||
if args == nil {
|
||||
|
@ -40,8 +44,8 @@ func Start(args []string) {
|
|||
// get & parse config
|
||||
err := app.getConfig(args)
|
||||
|
||||
// re-init logger with configured log level
|
||||
app.logger = makeZapLogger(app.config.logLevel)
|
||||
// if debug logging, make real debug logger
|
||||
app.debugLogger = log.New(os.Stdout, "debug: ", 0)
|
||||
|
||||
// deal with config err (after logger re-init)
|
||||
if err != nil {
|
||||
|
@ -49,7 +53,7 @@ func Start(args []string) {
|
|||
|
||||
if errors.Is(err, ff.ErrHelp) {
|
||||
// help explicitly requested
|
||||
app.logger.Info("\n\n", ffhelp.Command(app.cmd))
|
||||
app.stdLogger.Printf("\n%s\n", ffhelp.Command(app.cmd))
|
||||
|
||||
} else if errors.Is(err, ff.ErrDuplicateFlag) ||
|
||||
errors.Is(err, ff.ErrUnknownFlag) ||
|
||||
|
@ -57,13 +61,13 @@ func Start(args []string) {
|
|||
errors.Is(err, ErrExtraArgs) {
|
||||
// other error that suggests user needs to see help
|
||||
exitCode = 1
|
||||
app.logger.Error(err)
|
||||
app.logger.Info("\n\n", ffhelp.Command(app.cmd))
|
||||
app.errLogger.Print(err)
|
||||
app.stdLogger.Printf("\n%s\n", ffhelp.Command(app.cmd))
|
||||
|
||||
} else {
|
||||
// any other error
|
||||
exitCode = 1
|
||||
app.logger.Error(err)
|
||||
app.errLogger.Print(err)
|
||||
}
|
||||
|
||||
os.Exit(exitCode)
|
||||
|
@ -74,9 +78,14 @@ func Start(args []string) {
|
|||
err = app.cmd.Run(context.Background())
|
||||
if err != nil {
|
||||
exitCode = 1
|
||||
app.logger.Error(err)
|
||||
app.errLogger.Print(err)
|
||||
|
||||
// if extra args, show help
|
||||
if errors.Is(err, ErrExtraArgs) {
|
||||
app.stdLogger.Printf("\n%s\n", ffhelp.Command(app.cmd))
|
||||
}
|
||||
}
|
||||
|
||||
app.logger.Info("apc-p15-tool done")
|
||||
app.stdLogger.Print("apc-p15-tool done")
|
||||
os.Exit(exitCode)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue