Skip to content

Commit 158de53

Browse files
committed
Refactor with dependency inversion of the logger
1 parent bc09676 commit 158de53

File tree

5 files changed

+57
-68
lines changed

5 files changed

+57
-68
lines changed

cmd/gopherapi/main.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package main
33
import (
44
"flag"
55
"fmt"
6+
"log"
67
"net/http"
78
"os"
89
"strconv"
@@ -11,8 +12,7 @@ import (
1112
gopher "github.com/friendsofgo/gopherapi/pkg"
1213
"github.com/friendsofgo/gopherapi/pkg/adding"
1314
"github.com/friendsofgo/gopherapi/pkg/fetching"
14-
"github.com/friendsofgo/gopherapi/pkg/log"
15-
"github.com/friendsofgo/gopherapi/pkg/log/hooks"
15+
"github.com/friendsofgo/gopherapi/pkg/log/logrus"
1616
"github.com/friendsofgo/gopherapi/pkg/modifying"
1717
"github.com/friendsofgo/gopherapi/pkg/removing"
1818
"github.com/friendsofgo/gopherapi/pkg/server"
@@ -41,7 +41,7 @@ func main() {
4141
gophers = sample.Gophers
4242
}
4343

44-
logger := log.NewLogger(hooks.NewServerInformationHook())
44+
logger := logrus.NewLogger()
4545

4646
repo := inmem.NewRepository(gophers)
4747
fetchingService := fetching.NewService(repo, logger)
@@ -61,5 +61,5 @@ func main() {
6161
)
6262

6363
fmt.Println("The gopher server is on tap now:", httpAddr)
64-
logger.Fatal(http.ListenAndServe(httpAddr, s.Router()))
64+
log.Fatal(http.ListenAndServe(httpAddr, s.Router()))
6565
}

pkg/fetching/service.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@ type Service interface {
1515

1616
type service struct {
1717
repository gopher.Repository
18-
logger *log.Logger
18+
logger log.Logger
1919
}
2020

2121
// NewService creates a fetching service with the necessary dependencies
22-
func NewService(repository gopher.Repository, logger *log.Logger) Service {
22+
func NewService(repository gopher.Repository, logger log.Logger) Service {
2323
return &service{repository, logger}
2424
}
2525

pkg/log/hooks/server.go

Lines changed: 0 additions & 29 deletions
This file was deleted.

pkg/log/logger.go

Lines changed: 4 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -2,39 +2,10 @@ package log
22

33
import (
44
"context"
5-
6-
"github.com/sirupsen/logrus"
7-
)
8-
9-
// Event stores messages to log later, from our standard interface
10-
type Event struct {
11-
id string
12-
message string
13-
}
14-
15-
// Logger centralize log messages format
16-
type Logger struct {
17-
*logrus.Logger
18-
}
19-
20-
// NewLogger initializes the standard logger
21-
func NewLogger(hooks ...logrus.Hook) *Logger {
22-
logger := logrus.New()
23-
24-
for _, hook := range hooks {
25-
logger.AddHook(hook)
26-
}
27-
28-
return &Logger{logger}
29-
}
30-
31-
// Declare variables to store log messages as new Events
32-
var (
33-
unexpectedErrorMessage = Event{"01DK2XFX9PQ85ZPZ5CP68P108Y", "Unexpected error: %v"}
345
)
356

36-
// ElementNotFound is a standard error message for elements not found
37-
func (l *Logger) UnexpectedError(ctx context.Context, err error) {
38-
l.WithContext(ctx).WithField("logid", unexpectedErrorMessage.id).
39-
Errorf(unexpectedErrorMessage.message, err)
7+
// Logger determine the way to centralize log messages format
8+
type Logger interface {
9+
// UnexpectedError is a standard error message for unexpected errors
10+
UnexpectedError(ctx context.Context, err error)
4011
}

pkg/log/logrus/logrus.go

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package logrus
2+
3+
import (
4+
"context"
5+
6+
"github.com/sirupsen/logrus"
7+
8+
"github.com/friendsofgo/gopherapi/pkg/log"
9+
"github.com/friendsofgo/gopherapi/pkg/server"
10+
)
11+
12+
// Event stores messages to log later, from our standard interface
13+
type Event struct {
14+
id string
15+
message string
16+
}
17+
18+
// Logger centralize log messages format
19+
type logger struct {
20+
*logrus.Logger
21+
}
22+
23+
// NewLogger initializes the standard logger
24+
func NewLogger(hooks ...logrus.Hook) log.Logger {
25+
return &logger{logrus.New()}
26+
}
27+
28+
// Declare variables to store log messages as new Events
29+
var (
30+
unexpectedErrorMessage = Event{"01DK2XFX9PQ85ZPZ5CP68P108Y", "Unexpected error: %v"}
31+
)
32+
33+
func (l *logger) UnexpectedError(ctx context.Context, err error) {
34+
l.WithDefaultFields(ctx).WithField("logid", unexpectedErrorMessage.id).
35+
Errorf(unexpectedErrorMessage.message, err)
36+
}
37+
38+
func (l *logger) WithDefaultFields(ctx context.Context) *logrus.Entry {
39+
hostname, _ := server.Name(ctx)
40+
httpAddr, _ := server.HttpAddr(ctx)
41+
42+
return l.WithFields(logrus.Fields{
43+
"hostname": hostname,
44+
"httpAddr": httpAddr,
45+
})
46+
47+
}

0 commit comments

Comments
 (0)