package market import ( "encoding/json" "fmt" "os" ) // initializeLogging sets up JSONL logging files func (md *MarketDiscovery) initializeLogging() error { // Create logs directory if it doesn't exist if err := os.MkdirAll("logs", 0755); err != nil { return fmt.Errorf("failed to create logs directory: %w", err) } // Open market scan log file marketScanFile, err := os.OpenFile(md.config.Logging.Files["market_scans"], os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644) if err != nil { return fmt.Errorf("failed to open market scan log file: %w", err) } md.marketScanLogger = marketScanFile // Open arbitrage log file arbFile, err := os.OpenFile(md.config.Logging.Files["arbitrage"], os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644) if err != nil { return fmt.Errorf("failed to open arbitrage log file: %w", err) } md.arbLogger = arbFile return nil } // Logging methods func (md *MarketDiscovery) logMarketScan(result *MarketScanResult) error { data, err := json.Marshal(result) if err != nil { return err } _, err = md.marketScanLogger.Write(append(data, '\n')) if err != nil { return err } return md.marketScanLogger.Sync() } func (md *MarketDiscovery) logArbitrageOpportunity(opp *ArbitrageOpportunityDetailed) error { data, err := json.Marshal(opp) if err != nil { return err } _, err = md.arbLogger.Write(append(data, '\n')) if err != nil { return err } return md.arbLogger.Sync() } func (md *MarketDiscovery) logPoolDiscovery(result *PoolDiscoveryResult) error { data, err := json.Marshal(result) if err != nil { return err } _, err = md.marketScanLogger.Write(append(data, '\n')) if err != nil { return err } return md.marketScanLogger.Sync() }