Commit 7a27f5d7 authored by protolambda's avatar protolambda

logging: io writer argument for logger setup

parent e1d6fb39
...@@ -33,7 +33,7 @@ func Main(version string) func(cliCtx *cli.Context) error { ...@@ -33,7 +33,7 @@ func Main(version string) func(cliCtx *cli.Context) error {
return fmt.Errorf("invalid CLI flags: %w", err) return fmt.Errorf("invalid CLI flags: %w", err)
} }
l := oplog.NewLogger(cliCtx, cfg.LogConfig) l := oplog.NewLogger(oplog.AppOut(cliCtx), cfg.LogConfig)
endpointMonitor := NewEndpointMonitor(cfg, l) endpointMonitor := NewEndpointMonitor(cfg, l)
l.Info(fmt.Sprintf("starting endpoint monitor with checkInterval=%s checkDuration=%s", cfg.CheckInterval, cfg.CheckDuration)) l.Info(fmt.Sprintf("starting endpoint monitor with checkInterval=%s checkDuration=%s", cfg.CheckInterval, cfg.CheckDuration))
......
...@@ -28,7 +28,7 @@ var ( ...@@ -28,7 +28,7 @@ var (
) )
func runIndexer(ctx *cli.Context) error { func runIndexer(ctx *cli.Context) error {
log := log.NewLogger(ctx, log.ReadCLIConfig(ctx)).New("role", "indexer") log := log.NewLogger(log.AppOut(ctx), log.ReadCLIConfig(ctx)).New("role", "indexer")
cfg, err := config.LoadConfig(log, ctx.String(ConfigFlag.Name)) cfg, err := config.LoadConfig(log, ctx.String(ConfigFlag.Name))
if err != nil { if err != nil {
log.Error("failed to load config", "err", err) log.Error("failed to load config", "err", err)
...@@ -52,7 +52,7 @@ func runIndexer(ctx *cli.Context) error { ...@@ -52,7 +52,7 @@ func runIndexer(ctx *cli.Context) error {
} }
func runApi(ctx *cli.Context) error { func runApi(ctx *cli.Context) error {
log := log.NewLogger(ctx, log.ReadCLIConfig(ctx)).New("role", "api") log := log.NewLogger(log.AppOut(ctx), log.ReadCLIConfig(ctx)).New("role", "api")
cfg, err := config.LoadConfig(log, ctx.String(ConfigFlag.Name)) cfg, err := config.LoadConfig(log, ctx.String(ConfigFlag.Name))
if err != nil { if err != nil {
log.Error("failed to load config", "err", err) log.Error("failed to load config", "err", err)
...@@ -71,7 +71,7 @@ func runApi(ctx *cli.Context) error { ...@@ -71,7 +71,7 @@ func runApi(ctx *cli.Context) error {
} }
func runMigrations(ctx *cli.Context) error { func runMigrations(ctx *cli.Context) error {
log := log.NewLogger(ctx, log.ReadCLIConfig(ctx)).New("role", "api") log := log.NewLogger(log.AppOut(ctx), log.ReadCLIConfig(ctx)).New("role", "api")
cfg, err := config.LoadConfig(log, ctx.String(ConfigFlag.Name)) cfg, err := config.LoadConfig(log, ctx.String(ConfigFlag.Name))
migrationsDir := ctx.String(MigrationsFlag.Name) migrationsDir := ctx.String(MigrationsFlag.Name)
if err != nil { if err != nil {
......
...@@ -2,20 +2,21 @@ package etl ...@@ -2,20 +2,21 @@ package etl
import ( import (
"math/big" "math/big"
"testing"
"github.com/ethereum-optimism/optimism/op-service/log"
"github.com/ethereum-optimism/optimism/op-service/metrics"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/stretchr/testify/mock" "github.com/stretchr/testify/mock"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum-optimism/optimism/indexer/bigint" "github.com/ethereum-optimism/optimism/indexer/bigint"
"github.com/ethereum-optimism/optimism/indexer/config" "github.com/ethereum-optimism/optimism/indexer/config"
"github.com/ethereum-optimism/optimism/indexer/database" "github.com/ethereum-optimism/optimism/indexer/database"
"github.com/ethereum-optimism/optimism/indexer/node" "github.com/ethereum-optimism/optimism/indexer/node"
"github.com/ethereum-optimism/optimism/op-service/metrics"
"testing" "github.com/ethereum-optimism/optimism/op-service/testlog"
) )
func TestL1ETLConstruction(t *testing.T) { func TestL1ETLConstruction(t *testing.T) {
...@@ -104,7 +105,7 @@ func TestL1ETLConstruction(t *testing.T) { ...@@ -104,7 +105,7 @@ func TestL1ETLConstruction(t *testing.T) {
t.Run(test.name, func(t *testing.T) { t.Run(test.name, func(t *testing.T) {
ts := test.construction() ts := test.construction()
logger := log.NewLogger(nil, log.DefaultCLIConfig()) logger := testlog.Logger(t, log.LvlInfo)
cfg := Config{StartHeight: ts.start} cfg := Config{StartHeight: ts.start}
etl, err := NewL1ETL(cfg, logger, ts.db.DB, etlMetrics, ts.client, ts.contracts) etl, err := NewL1ETL(cfg, logger, ts.db.DB, etlMetrics, ts.client, ts.contracts)
......
...@@ -28,7 +28,7 @@ func Main(version string, cliCtx *cli.Context) error { ...@@ -28,7 +28,7 @@ func Main(version string, cliCtx *cli.Context) error {
} }
cfg := NewConfig(cliCtx) cfg := NewConfig(cliCtx)
l := oplog.NewLogger(cliCtx, cfg.LogConfig) l := oplog.NewLogger(oplog.AppOut(cliCtx), cfg.LogConfig)
opservice.ValidateEnvVars(flags.EnvVarPrefix, flags.Flags, l) opservice.ValidateEnvVars(flags.EnvVarPrefix, flags.Flags, l)
m := metrics.NewMetrics("default") m := metrics.NewMetrics("default")
l.Info("Initializing Batch Submitter") l.Info("Initializing Batch Submitter")
......
...@@ -43,7 +43,7 @@ func (l *l2Chain) PayloadByNumber(_ context.Context, _ uint64) (*eth.ExecutionPa ...@@ -43,7 +43,7 @@ func (l *l2Chain) PayloadByNumber(_ context.Context, _ uint64) (*eth.ExecutionPa
func Main(cliCtx *cli.Context) error { func Main(cliCtx *cli.Context) error {
log.Info("Initializing bootnode") log.Info("Initializing bootnode")
logCfg := oplog.ReadCLIConfig(cliCtx) logCfg := oplog.ReadCLIConfig(cliCtx)
logger := oplog.NewLogger(cliCtx, logCfg) logger := oplog.NewLogger(oplog.AppOut(cliCtx), logCfg)
m := metrics.NewMetrics("default") m := metrics.NewMetrics("default")
ctx := context.Background() ctx := context.Background()
......
...@@ -70,6 +70,6 @@ func run(args []string, action ConfigAction) error { ...@@ -70,6 +70,6 @@ func run(args []string, action ConfigAction) error {
func setupLogging(ctx *cli.Context) (log.Logger, error) { func setupLogging(ctx *cli.Context) (log.Logger, error) {
logCfg := oplog.ReadCLIConfig(ctx) logCfg := oplog.ReadCLIConfig(ctx)
logger := oplog.NewLogger(ctx, logCfg) logger := oplog.NewLogger(oplog.AppOut(ctx), logCfg)
return logger, nil return logger, nil
} }
...@@ -37,7 +37,7 @@ func Main(version string) func(ctx *cli.Context) error { ...@@ -37,7 +37,7 @@ func Main(version string) func(ctx *cli.Context) error {
return fmt.Errorf("invalid CLI flags: %w", err) return fmt.Errorf("invalid CLI flags: %w", err)
} }
l := oplog.NewLogger(cliCtx, cfg.Log) l := oplog.NewLogger(oplog.AppOut(cliCtx), cfg.Log)
l.Info("starting heartbeat monitor", "version", version) l.Info("starting heartbeat monitor", "version", version)
ctx, cancel := context.WithCancel(context.Background()) ctx, cancel := context.WithCancel(context.Background())
......
...@@ -83,7 +83,7 @@ func main() { ...@@ -83,7 +83,7 @@ func main() {
func RollupNodeMain(ctx *cli.Context) error { func RollupNodeMain(ctx *cli.Context) error {
log.Info("Initializing Rollup Node") log.Info("Initializing Rollup Node")
logCfg := oplog.ReadCLIConfig(ctx) logCfg := oplog.ReadCLIConfig(ctx)
log := oplog.NewLogger(ctx, logCfg) log := oplog.NewLogger(oplog.AppOut(ctx), logCfg)
opservice.ValidateEnvVars(flags.EnvVarPrefix, flags.Flags, log) opservice.ValidateEnvVars(flags.EnvVarPrefix, flags.Flags, log)
m := metrics.NewMetrics("default") m := metrics.NewMetrics("default")
......
package main package main
import ( import (
"os"
"github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/log"
"github.com/ethereum-optimism/optimism/op-program/client" "github.com/ethereum-optimism/optimism/op-program/client"
...@@ -10,7 +12,7 @@ import ( ...@@ -10,7 +12,7 @@ import (
func main() { func main() {
// Default to a machine parsable but relatively human friendly log format. // Default to a machine parsable but relatively human friendly log format.
// Don't do anything fancy to detect if color output is supported. // Don't do anything fancy to detect if color output is supported.
logger := oplog.NewLogger(nil, oplog.CLIConfig{ logger := oplog.NewLogger(os.Stdout, oplog.CLIConfig{
Level: log.LvlInfo, Level: log.LvlInfo,
Format: oplog.FormatLogFmt, Format: oplog.FormatLogFmt,
Color: false, Color: false,
......
...@@ -74,6 +74,6 @@ func run(args []string, action ConfigAction) error { ...@@ -74,6 +74,6 @@ func run(args []string, action ConfigAction) error {
func setupLogging(ctx *cli.Context) (log.Logger, error) { func setupLogging(ctx *cli.Context) (log.Logger, error) {
logCfg := oplog.ReadCLIConfig(ctx) logCfg := oplog.ReadCLIConfig(ctx)
logger := oplog.NewLogger(ctx, logCfg) logger := oplog.NewLogger(oplog.AppOut(ctx), logCfg)
return logger, nil return logger, nil
} }
...@@ -43,7 +43,7 @@ func Main(version string, cliCtx *cli.Context) error { ...@@ -43,7 +43,7 @@ func Main(version string, cliCtx *cli.Context) error {
return fmt.Errorf("invalid CLI flags: %w", err) return fmt.Errorf("invalid CLI flags: %w", err)
} }
l := oplog.NewLogger(cliCtx, cfg.LogConfig) l := oplog.NewLogger(oplog.AppOut(cliCtx), cfg.LogConfig)
opservice.ValidateEnvVars(flags.EnvVarPrefix, flags.Flags, l) opservice.ValidateEnvVars(flags.EnvVarPrefix, flags.Flags, l)
m := metrics.NewMetrics("default") m := metrics.NewMetrics("default")
l.Info("Initializing L2 Output Submitter") l.Info("Initializing L2 Output Submitter")
......
...@@ -139,13 +139,18 @@ type CLIConfig struct { ...@@ -139,13 +139,18 @@ type CLIConfig struct {
Format FormatType Format FormatType
} }
// AppOut returns an io.Writer to write app output to, like logs.
// This falls back to os.Stdout if the ctx, ctx.App or ctx.App.Writer are nil.
func AppOut(ctx *cli.Context) io.Writer {
if ctx == nil || ctx.App == nil || ctx.App.Writer == nil {
return os.Stdout
}
return ctx.App.Writer
}
// NewLogger creates a new configured logger. // NewLogger creates a new configured logger.
// The log handler of the logger is a LvlSetter, i.e. the log level can be changed as needed. // The log handler of the logger is a LvlSetter, i.e. the log level can be changed as needed.
func NewLogger(ctx *cli.Context, cfg CLIConfig) log.Logger { func NewLogger(wr io.Writer, cfg CLIConfig) log.Logger {
var wr io.Writer = os.Stdout
if ctx != nil && ctx.App != nil {
wr = ctx.App.Writer
}
handler := log.StreamHandler(wr, cfg.Format.Formatter(cfg.Color)) handler := log.StreamHandler(wr, cfg.Format.Formatter(cfg.Color))
handler = log.SyncHandler(handler) handler = log.SyncHandler(handler)
handler = NewDynamicLogHandler(cfg.Level, handler) handler = NewDynamicLogHandler(cfg.Level, handler)
......
...@@ -398,7 +398,7 @@ var ( ...@@ -398,7 +398,7 @@ var (
}, oplog.CLIFlags(envVarPrefix)...), opmetrics.CLIFlags(envVarPrefix)...), }, oplog.CLIFlags(envVarPrefix)...), opmetrics.CLIFlags(envVarPrefix)...),
Action: EngineAction(func(ctx *cli.Context, client client.RPC) error { Action: EngineAction(func(ctx *cli.Context, client client.RPC) error {
logCfg := oplog.ReadCLIConfig(ctx) logCfg := oplog.ReadCLIConfig(ctx)
l := oplog.NewLogger(ctx, logCfg) l := oplog.NewLogger(oplog.AppOut(ctx), logCfg)
settings := ParseBuildingArgs(ctx) settings := ParseBuildingArgs(ctx)
// TODO: finalize/safe flag // TODO: finalize/safe flag
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment