diff --git a/src/main.go b/src/main.go index 99a1f7c..f9ee26a 100644 --- a/src/main.go +++ b/src/main.go @@ -5,6 +5,8 @@ import ( "embed" "flag" "fmt" + "log" + "log/slog" "os" _ "github.com/mattn/go-sqlite3" @@ -18,6 +20,7 @@ import ( var migrations embed.FS var host = flag.String("host", "127.0.0.1:8000", "Set the web server host address.") +var debug = flag.Bool("debug", false, "Enable debug mode.") const POSITIONAL_ARGS_HELP = ` Valid commands: @@ -33,12 +36,21 @@ func main() { os.Exit(1) } + f, err := os.OpenFile("mmaschedule.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666) + if err != nil { + fmt.Println("Error opening file:", err) + os.Exit(1) + } + + defer f.Close() + log.SetOutput(f) + cmd := flag.Args()[0] client := NewScraperClient() queries, err := InitDb("db.sqlite") if err != nil { - fmt.Println("Error initializing database:", err) + slog.Error("Error initializing database", "error", err) return } @@ -47,7 +59,7 @@ func main() { go ScrapeEventsLoop(queries, client, true) err = RunServer(*host, queries) if err != nil { - fmt.Println("Error starting web server:", err) + slog.Error("Error starting web server:", "error", err) } case "scrape": ScrapeEvents(queries, client, true) diff --git a/src/orchestrator.go b/src/orchestrator.go index 7d914e3..96b1aef 100644 --- a/src/orchestrator.go +++ b/src/orchestrator.go @@ -2,7 +2,7 @@ package main import ( "context" - "fmt" + "log/slog" "mmaschedule-go/event" "time" ) @@ -24,7 +24,7 @@ func ScrapeEvents(q *event.Queries, client ClientScraper, tapology bool) { for _, scraper := range scrapers { e, err := scraper(client) if err != nil { - fmt.Println("Error scraping events:", err) + slog.Error("Error scraping events", "error", err) } else { events = append(events, *e...) } @@ -37,7 +37,7 @@ func ScrapeEvents(q *event.Queries, client ClientScraper, tapology bool) { if len(events) > 0 { err := q.UpsertEvents(context.Background(), events) if err != nil { - fmt.Println("Error updating events in database:", err) + slog.Error("Error updating events in database:", "error", err) } } } @@ -45,7 +45,7 @@ func ScrapeEvents(q *event.Queries, client ClientScraper, tapology bool) { func UpdateTapology(q *event.Queries, client ClientScraper, events *[]*event.Event) { err := SetTapologyCSRF(client) if err != nil { - fmt.Println("Error settings tapology CSRF:", err) + slog.Error("Error settings tapology CSRF:", "error", err) } for _, e := range *events { @@ -56,21 +56,21 @@ func UpdateTapology(q *event.Queries, client ClientScraper, events *[]*event.Eve f.FighterB, } for _, ff := range fighters { - fmt.Println("Getting tapology link for", ff.Name) + slog.Debug("Getting tapology link", "name", ff.Name) tapology, err := q.GetTapology(context.Background(), ff.Name) if err != nil { - fmt.Println("Error getting tapology from database:", err) + slog.Error("Error getting tapology from database", "error", err) link, err := GetTapologyLink(client, ff.Name) if err != nil { - fmt.Println("Error getting tapology from site:", err) + slog.Error("Error getting tapology from site", "error", err) } else if len(link) > 0 { err := q.CreateTapology(context.Background(), event.CreateTapologyParams{Name: ff.Name, Url: link}) if err != nil { - fmt.Println("Error creating tapology in database:", err) + slog.Error("Error creating tapology in database", "error", err) } ff.Link = link } - time.Sleep(time.Duration(5) * time.Second) + time.Sleep(time.Duration(5) * time.Second) } else { ff.Link = tapology.Url } diff --git a/src/scrapers.go b/src/scrapers.go index 6082070..67e459b 100644 --- a/src/scrapers.go +++ b/src/scrapers.go @@ -3,7 +3,7 @@ package main import ( "encoding/json" "fmt" - "log" + "log/slog" "net/http" "net/url" "regexp" @@ -56,7 +56,7 @@ func ScrapeONE(client ClientScraper) (*[]*event.Event, error) { err := ScrapeONEEvent(client, &e) if err != nil { - log.Println(err) + slog.Error("Error scraping ONE event", "error", err) return } @@ -159,7 +159,7 @@ func ScrapeUFC(client ClientScraper) (*[]*event.Event, error) { } err := ScrapeUFCEvent(client, &e) if err != nil { - log.Println(err) + slog.Error("Error scraping UFC event", "error", err) } else if e.Fights != "null" { events = append(events, &e) }