From 76db478dffd3754a912c60cfb9f976226820ded1 Mon Sep 17 00:00:00 2001 From: Edouard Paris Date: Tue, 26 Mar 2019 14:02:59 +0100 Subject: [PATCH] refac app and logging --- app/app.go | 15 +++++++++++++-- cli/cli.go | 9 ++++++--- config/config.go | 1 + logging/logging.go | 16 ++++++++++------ 4 files changed, 30 insertions(+), 11 deletions(-) diff --git a/app/app.go b/app/app.go index 13d38e6..d556a8d 100644 --- a/app/app.go +++ b/app/app.go @@ -12,6 +12,17 @@ type App struct { Network *network.Network } -func Load() (*App, error) { - return &App{}, nil +func New(cfg *config.Config) (*App, error) { + logger := logging.New(cfg.Logger) + + network, err := network.New(&cfg.Network, logger) + if err != nil { + return nil, err + } + + return &App{ + Config: cfg, + Logger: logger, + Network: network, + }, nil } diff --git a/cli/cli.go b/cli/cli.go index 234e767..a509111 100644 --- a/cli/cli.go +++ b/cli/cli.go @@ -47,14 +47,17 @@ func New() *cli.App { } func run(c *cli.Context) error { - network, err := getNetworkFromConfig(c) + cfg, err := config.Load(c.String("config")) if err != nil { return err } - a := &app.App{Network: network} + app, err := app.New(cfg) + if err != nil { + return err + } - return ui.Run(context.Background(), a) + return ui.Run(context.Background(), app) } func getNetworkFromConfig(c *cli.Context) (*network.Network, error) { diff --git a/config/config.go b/config/config.go index 18cd9ac..9ac5960 100644 --- a/config/config.go +++ b/config/config.go @@ -18,6 +18,7 @@ type Config struct { type Logger struct { Type string `yaml:"type"` + Dest string `yaml:"dest"` } type Network struct { diff --git a/logging/logging.go b/logging/logging.go index 042f844..3e46fd0 100644 --- a/logging/logging.go +++ b/logging/logging.go @@ -46,22 +46,26 @@ func Object(key string, val zapcore.ObjectMarshaler) Field { func New(cfg config.Logger) Logger { var logger Logger if cfg.Type == "development" { - logger, _ = NewDevelopmentLogger() + logger, _ = NewDevelopmentLogger(cfg.Dest) } else if cfg.Type == "noop" { logger, _ = NewNopLogger() } else { - logger, _ = NewProductionLogger() + logger, _ = NewProductionLogger(cfg.Dest) } return logger } -func NewProductionLogger() (Logger, error) { - return zap.NewProduction() +func NewProductionLogger(dest string) (Logger, error) { + config := zap.NewProductionConfig() + config.OutputPaths = []string{dest} + return config.Build() } -func NewDevelopmentLogger() (Logger, error) { - return zap.NewDevelopment() +func NewDevelopmentLogger(dest string) (Logger, error) { + config := zap.NewDevelopmentConfig() + config.OutputPaths = []string{dest} + return config.Build() } func NewNopLogger() (Logger, error) {