Skip to content

Commit

Permalink
Replace zerolog with stdlib slog
Browse files Browse the repository at this point in the history
  • Loading branch information
Wikidepia committed Jul 19, 2024
1 parent 52ca10a commit d115919
Show file tree
Hide file tree
Showing 6 changed files with 25 additions and 45 deletions.
3 changes: 0 additions & 3 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ require (
github.com/elastic/go-freelru v0.13.0
github.com/go-chi/chi/v5 v5.1.0
github.com/kelindar/binary v1.0.19
github.com/rs/zerolog v1.33.0
github.com/tdewolff/parse/v2 v2.7.15
github.com/tidwall/gjson v1.17.1
go.etcd.io/bbolt v1.3.10
Expand All @@ -23,8 +22,6 @@ require (

require (
github.com/andybalholm/cascadia v1.3.2 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/stretchr/testify v1.9.0 // indirect
github.com/tidwall/match v1.1.1 // indirect
github.com/tidwall/pretty v1.2.1 // indirect
Expand Down
15 changes: 0 additions & 15 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -8,28 +8,16 @@ github.com/andybalholm/cascadia v1.3.2 h1:3Xi6Dw5lHF15JtdcmAHD3i1+T8plmv7BQ/nsVi
github.com/andybalholm/cascadia v1.3.2/go.mod h1:7gtRlve5FxPPgIgX36uWBX58OdBsSS6lUvCFb+h7KvU=
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/elastic/go-freelru v0.13.0 h1:TKKY6yCfNNNky7Pj9xZAOEpBcdNgZJfihEftOb55omg=
github.com/elastic/go-freelru v0.13.0/go.mod h1:bSdWT4M0lW79K8QbX6XY2heQYSCqD7THoYf82pT/H3I=
github.com/go-chi/chi/v5 v5.1.0 h1:acVI1TYaD+hhedDJ3r54HyA6sExp3HfXq7QWEEY/xMw=
github.com/go-chi/chi/v5 v5.1.0/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/kelindar/binary v1.0.19 h1:DNyQCtKjkLhBh9pnP49OWREddLB0Mho+1U/AOt/Qzxw=
github.com/kelindar/binary v1.0.19/go.mod h1:/twdz8gRLNMffx0U4UOgqm1LywPs6nd9YK2TX52MDh8=
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8=
github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss=
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/tdewolff/parse/v2 v2.7.15 h1:hysDXtdGZIRF5UZXwpfn3ZWRbm+ru4l53/ajBRGpCTw=
Expand Down Expand Up @@ -69,11 +57,8 @@ golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws=
golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
Expand Down
6 changes: 3 additions & 3 deletions handlers/grid.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"image/jpeg"
scraper "instafix/handlers/scraper"
"io"
"log/slog"
"math"
"net/http"
"os"
Expand All @@ -15,7 +16,6 @@ import (

"github.com/RyanCarrier/dijkstra/v2"
"github.com/go-chi/chi/v5"
"github.com/rs/zerolog/log"
"golang.org/x/image/draw"
"golang.org/x/sync/singleflight"
)
Expand Down Expand Up @@ -169,14 +169,14 @@ func Grid(w http.ResponseWriter, r *http.Request) {
// Make request client.Get
res, err := client.Do(req)
if err != nil {
log.Error().Str("postID", postID).Err(err).Msg("Failed to get image")
slog.Error("Failed to get image", "postID", postID, "err", err)
return
}
defer res.Body.Close()

images[i], err = jpeg.Decode(res.Body)
if err != nil {
log.Error().Str("postID", postID).Err(err).Msg("Failed to decode image")
slog.Error("Failed to decode image", "postID", postID, "err", err)
return
}
}(i, mediaURL)
Expand Down
3 changes: 1 addition & 2 deletions handlers/scraper/cache.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import (

"github.com/cespare/xxhash/v2"
"github.com/elastic/go-freelru"
"github.com/rs/zerolog/log"
bolt "go.etcd.io/bbolt"
)

Expand Down Expand Up @@ -54,7 +53,7 @@ func InitLRU(maxEntries int) {
// Fill LRU with existing files
dir, err := os.ReadDir("static")
if err != nil {
log.Fatal().Err(err).Msg("Failed to read static folder")
panic(err)
}
for _, d := range dir {
if !d.IsDir() {
Expand Down
26 changes: 13 additions & 13 deletions handlers/scraper/data.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"errors"
"instafix/utils"
"io"
"log/slog"
"net/http"
"net/url"
"strconv"
Expand All @@ -14,7 +15,6 @@ import (
"github.com/PuerkitoBio/goquery"
"github.com/PurpleSec/escape"
"github.com/kelindar/binary"
"github.com/rs/zerolog/log"
"github.com/tdewolff/parse/v2"
"github.com/tdewolff/parse/v2/js"
"github.com/tidwall/gjson"
Expand Down Expand Up @@ -64,7 +64,7 @@ func GetData(postID string) (*InstaData, error) {
if err != nil {
return err
}
log.Debug().Str("postID", postID).Msg("Data parsed from cache")
slog.Debug("Data parsed from cache", "postID", postID)
return nil
})
if err != nil {
Expand All @@ -80,15 +80,15 @@ func GetData(postID string) (*InstaData, error) {
item := new(InstaData)
item.PostID = postID
if err := item.ScrapeData(); err != nil {
log.Error().Str("postID", item.PostID).Err(err).Msg("Failed to scrape data from Instagram")
slog.Error("Failed to scrape data from Instagram", "postID", item.PostID, "err", err)
return nil, err
}

// Replace all media urls cdn to scontent.cdninstagram.com
for n, media := range item.Medias {
u, err := url.Parse(media.URL)
if err != nil {
log.Error().Str("postID", item.PostID).Err(err).Msg("Failed to parse media URL")
slog.Error("Failed to parse media URL", "postID", item.PostID, "err", err)
return false, err
}
u.Host = "scontent.cdninstagram.com"
Expand All @@ -97,7 +97,7 @@ func GetData(postID string) (*InstaData, error) {

bb, err := binary.Marshal(item)
if err != nil {
log.Error().Str("postID", item.PostID).Err(err).Msg("Failed to marshal data")
slog.Error("Failed to marshal data", "postID", item.PostID, "err", err)
return false, err
}

Expand All @@ -117,7 +117,7 @@ func GetData(postID string) (*InstaData, error) {
return nil
})
if err != nil {
log.Error().Str("postID", item.PostID).Err(err).Msg("Failed to save data to cache")
slog.Error("Failed to save data to cache", "postID", item.PostID, "err", err)
return false, err
}
return item, nil
Expand All @@ -143,11 +143,11 @@ func (i *InstaData) ScrapeData() error {
iDataGunzip, err := io.ReadAll(res.Body)
if err == nil {
if err = binary.Unmarshal(iDataGunzip, i); err == nil {
log.Info().Str("postID", i.PostID).Msg("Data parsed from remote scraper")
slog.Info("Data parsed from remote scraper", "postID", i.PostID)
return nil
}
}
log.Error().Str("postID", i.PostID).Int("status", res.StatusCode).Err(err).Msg("Failed to scrape data from remote scraper")
slog.Error("Failed to scrape data from remote scraper", "postID", i.PostID, "status", res.StatusCode, "err", err)
}
}

Expand Down Expand Up @@ -193,19 +193,19 @@ func (i *InstaData) ScrapeData() error {
text = text[1 : len(text)-1]
unescapeData := utils.UnescapeJSONString(utils.B2S(text))
if !gjson.Valid(unescapeData) {
log.Error().Str("postID", i.PostID).Err(err).Msg("Failed to parse data from TimeSliceImpl")
slog.Error("Failed to parse data from TimeSliceImpl", "postID", i.PostID, "err", err)
return err
}
timeSliceData = gjson.Parse(unescapeData).Get("gql_data")
log.Info().Str("postID", i.PostID).Msg("Data parsed from TimeSliceImpl")
slog.Info("Data parsed from TimeSliceImpl", "postID", i.PostID)
}
}
}

// Scrape from embed HTML
embedHTML, err := scrapeFromEmbedHTML(body)
if err != nil {
log.Error().Str("postID", i.PostID).Err(err).Msg("Failed to parse data from scrapeFromEmbedHTML")
slog.Error("Failed to parse data from scrapeFromEmbedHTML", "postID", i.PostID, "err", err)
return err
}
embedData := gjson.Parse(embedHTML)
Expand All @@ -218,7 +218,7 @@ func (i *InstaData) ScrapeData() error {
if videoBlocked || len(username) == 0 {
gqlValue, err := scrapeFromGQL(i.PostID)
if err != nil {
log.Error().Str("postID", i.PostID).Err(err).Msg("Failed to scrape data from scrapeFromGQL")
slog.Error("Failed to scrape data from scrapeFromGQL", "postID", i.PostID, "err", err)
return err
}
gqlData = gjson.Parse(utils.B2S(gqlValue)).Get("data")
Expand Down Expand Up @@ -282,7 +282,7 @@ func (i *InstaData) ScrapeData() error {
if len(username) == 0 {
return ErrNotFound
}
log.Info().Str("postID", i.PostID).Msg("Data scraped from embedHTML")
slog.Info("Data scraped from embedHTML", "postID", i.PostID)
return nil
}

Expand Down
17 changes: 8 additions & 9 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
scraper "instafix/handlers/scraper"
"instafix/utils"
"instafix/views"
"log/slog"
"net/http"
_ "net/http/pprof"
"os"
Expand All @@ -15,8 +16,6 @@ import (

"github.com/go-chi/chi/v5"
"github.com/go-chi/chi/v5/middleware"
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
bolt "go.etcd.io/bbolt"
)

Expand All @@ -34,18 +33,18 @@ func main() {
// Initialize remote scraper
if *remoteScraperAddr != "" {
if !strings.HasPrefix(*remoteScraperAddr, "http") {
log.Fatal().Msg("Invalid remote scraper address")
panic("Remote scraper address must start with http:// or https://")
}
scraper.RemoteScraperAddr = *remoteScraperAddr
}

// Initialize zerolog
zerolog.SetGlobalLevel(zerolog.ErrorLevel)
// Initialize logging
slog.SetLogLoggerLevel(slog.LevelError)

// Initialize LRU
gridCacheMax, err := strconv.Atoi(*gridCacheMaxFlag)
if err != nil || gridCacheMax <= 0 {
log.Fatal().Err(err).Msg("Failed to parse grid-cache-entries or invalid value")
panic(err)
}
scraper.InitLRU(gridCacheMax)

Expand Down Expand Up @@ -89,7 +88,7 @@ func main() {
views.Home(w)
})
if err := http.ListenAndServe(*listenAddr, r); err != nil {
log.Fatal().Err(err).Msg("Failed to listen")
slog.Error("Failed to listen", "err", err)
}
}

Expand All @@ -113,12 +112,12 @@ func evictCache() {
dataBucket.Delete(v)
}
} else {
log.Error().Err(err).Msg("Failed to parse expire timestamp in cache")
slog.Error("Failed to parse expire timestamp in cache", "err", err)
}
}
return nil
})
if err != nil {
log.Error().Err(err).Msg("Failed to evict cache")
slog.Error("Failed to evict cache", "err", err)
}
}

0 comments on commit d115919

Please sign in to comment.