Skip to content

Commit

Permalink
refactor: create zap field log function and update the use on entire …
Browse files Browse the repository at this point in the history
…project (#4)
  • Loading branch information
hiago-balbino authored Feb 8, 2024
1 parent 8e76739 commit 5010281
Show file tree
Hide file tree
Showing 7 changed files with 17 additions and 23 deletions.
6 changes: 2 additions & 4 deletions internal/core/crawler/crawler_service.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@ import (
"github.com/hiago-balbino/web-crawler/internal/core/pager"
"github.com/hiago-balbino/web-crawler/internal/pkg/logger"
"github.com/hiago-balbino/web-crawler/internal/pkg/metrics"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
"golang.org/x/net/html"
)

Expand Down Expand Up @@ -64,7 +62,7 @@ func (p CrawlerService) Craw(ctx context.Context, uri string, depth uint) ([]str
for fetching := uint(1); fetching <= depth; fetching++ {
linkAddress := <-ch
if linkAddress.err != nil {
log.Error("error to get uri node", zap.Field{Type: zapcore.StringType, String: linkAddress.err.Error()})
log.Error("error to get uri node", logger.FieldError(linkAddress.err))
metrics.LinksErrorCounter.Inc()

return nil, linkAddress.err
Expand Down Expand Up @@ -93,7 +91,7 @@ func (p CrawlerService) Craw(ctx context.Context, uri string, depth uint) ([]str
}()

if err := p.database.Insert(ctx, uri, depth, links); err != nil {
log.Error("error inserting data into database", zap.Field{Type: zapcore.StringType, String: err.Error()})
log.Error("error inserting data into database", logger.FieldError(err))
}

return links, nil
Expand Down
6 changes: 2 additions & 4 deletions internal/core/pager/pager_service.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@ import (
"net/http"

"github.com/hiago-balbino/web-crawler/internal/pkg/logger"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
"golang.org/x/net/html"
)

Expand All @@ -27,14 +25,14 @@ func (c PagerService) GetNode(uri string) (*html.Node, error) {
}
}()
if err != nil {
log.Error("error to perform get request in provider", zap.Field{Type: zapcore.StringType, String: err.Error()})
log.Error("error to perform get request in provider", logger.FieldError(err))

return nil, err
}

node, err := html.Parse(response.Body)
if err != nil {
log.Error("error to parse response body to html", zap.Field{Type: zapcore.StringType, String: err.Error()})
log.Error("error to parse response body to html", logger.FieldError(err))

return nil, err
}
Expand Down
9 changes: 4 additions & 5 deletions internal/handler/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@ import (

"github.com/gin-gonic/gin"
core "github.com/hiago-balbino/web-crawler/internal/core/crawler"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
"github.com/hiago-balbino/web-crawler/internal/pkg/logger"
)

type Handler struct {
Expand All @@ -20,22 +19,22 @@ func NewHandler(service core.CrawlerUsecase) Handler {
func (h Handler) getPageCrawled(c *gin.Context) {
var crawPageInfo crawPageInfo
if err := c.BindQuery(&crawPageInfo); err != nil {
log.Error("error binding query params", zap.Field{Type: zapcore.StringType, String: err.Error()})
log.Error("error binding query params", logger.FieldError(err))
c.HTML(http.StatusBadRequest, "error.html", gin.H{"error": err.Error()})

return
}

if err := crawPageInfo.validate(); err != nil {
log.Error("error validating parameters", zap.Field{Type: zapcore.StringType, String: err.Error()})
log.Error("error validating parameters", logger.FieldError(err))
c.HTML(http.StatusBadRequest, "error.html", gin.H{"error": err.Error()})

return
}

links, err := h.service.Craw(c.Request.Context(), crawPageInfo.URI, crawPageInfo.Depth)
if err != nil {
log.Error("error crawling page", zap.Field{Type: zapcore.StringType, String: err.Error()})
log.Error("error crawling page", logger.FieldError(err))
c.HTML(http.StatusInternalServerError, "error.html", gin.H{"error": err.Error()})

return
Expand Down
4 changes: 1 addition & 3 deletions internal/handler/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,6 @@ import (
"github.com/hiago-balbino/web-crawler/internal/repository/storage"
"github.com/penglongli/gin-metrics/ginmetrics"
"github.com/spf13/viper"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)

var log = logger.GetLogger()
Expand All @@ -41,7 +39,7 @@ func (s Server) Start() {
monitor.Use(router)

if err := router.Run(fmt.Sprintf(":%s", viper.GetString("API_PORT"))); err != nil {
log.Fatal("error while server starting", zap.Field{Type: zapcore.StringType, String: err.Error()})
log.Fatal("error while server starting", logger.FieldError(err))
}
}

Expand Down
4 changes: 4 additions & 0 deletions internal/pkg/logger/zap_logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,10 @@ func GetLogger() *zap.Logger {
return Logger
}

func FieldError(err error) zapcore.Field {
return zapcore.Field{Type: zapcore.StringType, String: err.Error()}
}

func getLogLevel() zapcore.Level {
logLevel := viper.GetString("LOG_LEVEL")

Expand Down
8 changes: 3 additions & 5 deletions internal/repository/storage/crawler_mongodb_repository.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,6 @@ import (
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)

var log = logger.GetLogger()
Expand All @@ -33,7 +31,7 @@ func NewCrawlerMongodbRepository(ctx context.Context) CrawlerMongodbRepository {
opts := options.Client().ApplyURI(endpoint)
client, err := mongo.Connect(ctx, opts)
if err != nil {
log.Error("error connecting to mongodb", zap.Field{Type: zapcore.StringType, String: err.Error()})
log.Error("error connecting to mongodb", logger.FieldError(err))
}

return CrawlerMongodbRepository{client}
Expand All @@ -51,7 +49,7 @@ func (c CrawlerMongodbRepository) Insert(ctx context.Context, uri string, depth
}
_, err := c.getCollection().InsertOne(ctx, pageDataInfo)
if err != nil {
log.Error("error while inserting new data into collection", zap.Field{Type: zapcore.StringType, String: err.Error()})
log.Error("error while inserting new data into collection", logger.FieldError(err))

return err
}
Expand All @@ -64,7 +62,7 @@ func (c CrawlerMongodbRepository) Find(ctx context.Context, uri string, depth ui
pageDataInfo := pageDataInfo{}
err := c.getCollection().FindOne(ctx, filter).Decode(&pageDataInfo)
if err != nil {
log.Error("error while fetching data from collection", zap.Field{Type: zapcore.StringType, String: err.Error()})
log.Error("error while fetching data from collection", logger.FieldError(err))

return nil, err
}
Expand Down
3 changes: 1 addition & 2 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,13 @@ package main
import (
"github.com/hiago-balbino/web-crawler/cmd"
"github.com/hiago-balbino/web-crawler/internal/pkg/logger"
"go.uber.org/zap/zapcore"
)

func main() {
err := cmd.Execute()
if err != nil {
logger.
GetLogger().
Fatal("error initializing the application", zapcore.Field{Type: zapcore.StringType, String: err.Error()})
Fatal("error initializing the application", logger.FieldError(err))
}
}

0 comments on commit 5010281

Please sign in to comment.