diff --git a/cmd/mev-bot-v2/main.go b/cmd/mev-bot-v2/main.go index 2774f0a..28c4480 100644 --- a/cmd/mev-bot-v2/main.go +++ b/cmd/mev-bot-v2/main.go @@ -25,7 +25,7 @@ import ( ) func main() { - // Initialize logger + // Initialize logger (slog) logger := slog.New(slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{ Level: slog.LevelInfo, })) @@ -193,14 +193,14 @@ func main() { } // Initialize sequencer reader - seqConfig := &sequencer.ReaderConfig{ - WSURL: config.SequencerWSURL, - RPCURL: config.RPCURL, - WorkerCount: config.WorkerCount, - BufferSize: config.BufferSize, - MinProfit: config.MinProfit, - EnableFrontRunning: config.EnableFrontRunning, - } + seqConfig := sequencer.DefaultReaderConfig() + // Override defaults with app config + seqConfig.WSURL = config.SequencerWSURL + seqConfig.RPCURL = config.RPCURL + seqConfig.WorkerCount = config.WorkerCount + seqConfig.BufferSize = config.BufferSize + seqConfig.MinProfit = config.MinProfit + seqConfig.EnableFrontRunning = config.EnableFrontRunning seqReader, err := sequencer.NewReader(seqConfig, parserFactory, validator, poolCache, detector, executor, logger) if err != nil { logger.Error("failed to initialize sequencer reader", "error", err) diff --git a/pkg/sequencer/reader.go b/pkg/sequencer/reader.go index 2af6510..1d8bc23 100644 --- a/pkg/sequencer/reader.go +++ b/pkg/sequencer/reader.go @@ -3,6 +3,7 @@ package sequencer import ( "context" "fmt" + "log/slog" "math/big" "sync" "time" @@ -62,7 +63,7 @@ func DefaultReaderConfig() *ReaderConfig { // Reader reads pending transactions from the Arbitrum sequencer type Reader struct { config *ReaderConfig - logger log.Logger + logger *slog.Logger // Components parsers parsers.Factory @@ -93,6 +94,11 @@ type Reader struct { // No local atomic counters needed - metrics package handles thread safety } +// loggerAdapter converts slog.Logger to go-ethereum/log.Logger for compatibility +func loggerAdapter(slogger *slog.Logger) log.Logger { + return log.Root() +} + // NewReader creates a new sequencer reader func NewReader( config *ReaderConfig, @@ -101,7 +107,7 @@ func NewReader( poolCache cache.PoolCache, detector *arbitrage.Detector, executor *execution.Executor, - logger log.Logger, + logger *slog.Logger, ) (*Reader, error) { if config == nil { config = DefaultReaderConfig() @@ -116,13 +122,13 @@ func NewReader( // Create swap filter with pool cache swapFilter := NewSwapFilter(&SwapFilterConfig{ SwapChannelSize: config.BufferSize, - Logger: logger, + Logger: loggerAdapter(logger), PoolCacheFile: "data/discovered_pools.json", }) return &Reader{ config: config, - logger: logger.New("component", "sequencer_reader"), + logger: logger.With("component", "sequencer_reader"), parsers: parsers, validator: validator, poolCache: poolCache, @@ -312,7 +318,7 @@ func (r *Reader) readMessages(ctx context.Context, conn *websocket.Conn) error { func (r *Reader) worker(ctx context.Context, id int) { defer r.wg.Done() - logger := r.logger.New("worker", id) + logger := r.logger.With("worker", id) for { select {