Skip to content

Commit 87a2acb

Browse files
committed
Add elastic client error logger for consumers.
1 parent 4613958 commit 87a2acb

File tree

8 files changed

+184
-0
lines changed

8 files changed

+184
-0
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package elastic
2+
3+
import (
4+
"net/http"
5+
"time"
6+
7+
"github.com/elastic/elastic-transport-go/v8/elastictransport"
8+
)
9+
10+
type Logger struct {
11+
elasticLogger elastictransport.Logger
12+
}
13+
14+
func NewLogger(elasticLogger elastictransport.Logger) *Logger {
15+
return &Logger{
16+
elasticLogger: elasticLogger,
17+
}
18+
}
19+
20+
func (l *Logger) LogRoundTrip(request *http.Request, response *http.Response, err error, time time.Time, duration time.Duration) error {
21+
22+
// err is present only for transport errors such as network failure, timeout, DNS
23+
if err != nil {
24+
return l.elasticLogger.LogRoundTrip(request, response, err, time, duration)
25+
}
26+
27+
// this filters for retriable errors
28+
if response != nil && response.StatusCode > 201 {
29+
return l.elasticLogger.LogRoundTrip(request, response, err, time, duration)
30+
}
31+
return nil
32+
}
33+
34+
func (l *Logger) RequestBodyEnabled() bool {
35+
return l.elasticLogger.RequestBodyEnabled()
36+
}
37+
38+
func (l *Logger) ResponseBodyEnabled() bool {
39+
return l.elasticLogger.ResponseBodyEnabled()
40+
}

computors-consumer/main.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"time"
1212

1313
"github.com/ardanlabs/conf/v3"
14+
"github.com/elastic/elastic-transport-go/v8/elastictransport"
1415
"github.com/elastic/go-elasticsearch/v8"
1516
"github.com/pkg/errors"
1617
"github.com/prometheus/client_golang/prometheus"
@@ -100,6 +101,11 @@ func run() error {
100101
RetryOnStatus: []int{502, 503, 504, 429},
101102
MaxRetries: cfg.Elastic.MaxRetries,
102103
RetryBackoff: calculateBackoff(),
104+
Logger: elastic.NewLogger(&elastictransport.TextLogger{
105+
Output: os.Stdout,
106+
EnableRequestBody: false,
107+
EnableResponseBody: true, // Make response body available in the logger so we can log response
108+
}),
103109
})
104110

105111
elasticClient := elastic.NewClient(esClient, cfg.Elastic.IndexName)
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package elastic
2+
3+
import (
4+
"net/http"
5+
"time"
6+
7+
"github.com/elastic/elastic-transport-go/v8/elastictransport"
8+
)
9+
10+
type Logger struct {
11+
elasticLogger elastictransport.Logger
12+
}
13+
14+
func NewLogger(elasticLogger elastictransport.Logger) *Logger {
15+
return &Logger{
16+
elasticLogger: elasticLogger,
17+
}
18+
}
19+
20+
func (l *Logger) LogRoundTrip(request *http.Request, response *http.Response, err error, time time.Time, duration time.Duration) error {
21+
22+
// err is present only for transport errors such as network failure, timeout, DNS
23+
if err != nil {
24+
return l.elasticLogger.LogRoundTrip(request, response, err, time, duration)
25+
}
26+
27+
// this filters for retriable errors
28+
if response != nil && response.StatusCode > 201 {
29+
return l.elasticLogger.LogRoundTrip(request, response, err, time, duration)
30+
}
31+
return nil
32+
}
33+
34+
func (l *Logger) RequestBodyEnabled() bool {
35+
return l.elasticLogger.RequestBodyEnabled()
36+
}
37+
38+
func (l *Logger) ResponseBodyEnabled() bool {
39+
return l.elasticLogger.ResponseBodyEnabled()
40+
}

tick-data-consumer/main.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"time"
1313

1414
"github.com/ardanlabs/conf"
15+
"github.com/elastic/elastic-transport-go/v8/elastictransport"
1516
"github.com/elastic/go-elasticsearch/v8"
1617
"github.com/pkg/errors"
1718
"github.com/prometheus/client_golang/prometheus"
@@ -120,6 +121,11 @@ func run() error {
120121
RetryOnStatus: []int{502, 503, 504, 429},
121122
MaxRetries: cfg.Elastic.MaxRetries,
122123
RetryBackoff: calculateBackoff(),
124+
Logger: elastic.NewLogger(&elastictransport.TextLogger{
125+
Output: os.Stdout,
126+
EnableRequestBody: false,
127+
EnableResponseBody: true, // Make response body available in the logger so we can log response
128+
}),
123129
})
124130
if err != nil {
125131
return errors.Wrap(err, "creating elastic client")
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package elastic
2+
3+
import (
4+
"net/http"
5+
"time"
6+
7+
"github.com/elastic/elastic-transport-go/v8/elastictransport"
8+
)
9+
10+
type Logger struct {
11+
elasticLogger elastictransport.Logger
12+
}
13+
14+
func NewLogger(elasticLogger elastictransport.Logger) *Logger {
15+
return &Logger{
16+
elasticLogger: elasticLogger,
17+
}
18+
}
19+
20+
func (l *Logger) LogRoundTrip(request *http.Request, response *http.Response, err error, time time.Time, duration time.Duration) error {
21+
22+
// err is present only for transport errors such as network failure, timeout, DNS
23+
if err != nil {
24+
return l.elasticLogger.LogRoundTrip(request, response, err, time, duration)
25+
}
26+
27+
// this filters for retriable errors
28+
if response != nil && response.StatusCode > 201 {
29+
return l.elasticLogger.LogRoundTrip(request, response, err, time, duration)
30+
}
31+
return nil
32+
}
33+
34+
func (l *Logger) RequestBodyEnabled() bool {
35+
return l.elasticLogger.RequestBodyEnabled()
36+
}
37+
38+
func (l *Logger) ResponseBodyEnabled() bool {
39+
return l.elasticLogger.ResponseBodyEnabled()
40+
}

tick-intervals-consumer/main.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
"time"
1414

1515
"github.com/ardanlabs/conf"
16+
"github.com/elastic/elastic-transport-go/v8/elastictransport"
1617
"github.com/elastic/go-elasticsearch/v8"
1718
"github.com/prometheus/client_golang/prometheus"
1819
"github.com/prometheus/client_golang/prometheus/promhttp"
@@ -114,6 +115,11 @@ func run() error {
114115
RetryOnStatus: []int{502, 503, 504, 429},
115116
MaxRetries: cfg.Elastic.MaxRetries,
116117
RetryBackoff: calculateBackoff(),
118+
Logger: elastic.NewLogger(&elastictransport.TextLogger{
119+
Output: os.Stdout,
120+
EnableRequestBody: false,
121+
EnableResponseBody: true, // Make response body available in the logger so we can log response
122+
}),
117123
})
118124
if err != nil {
119125
return fmt.Errorf("creating elastic client: %w", err)
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package extern
2+
3+
import (
4+
"net/http"
5+
"time"
6+
7+
"github.com/elastic/elastic-transport-go/v8/elastictransport"
8+
)
9+
10+
type Logger struct {
11+
elasticLogger elastictransport.Logger
12+
}
13+
14+
func NewLogger(elasticLogger elastictransport.Logger) *Logger {
15+
return &Logger{
16+
elasticLogger: elasticLogger,
17+
}
18+
}
19+
20+
func (l *Logger) LogRoundTrip(request *http.Request, response *http.Response, err error, time time.Time, duration time.Duration) error {
21+
22+
// err is present only for transport errors such as network failure, timeout, DNS
23+
if err != nil {
24+
return l.elasticLogger.LogRoundTrip(request, response, err, time, duration)
25+
}
26+
27+
// this filters for retriable errors
28+
if response != nil && response.StatusCode > 201 {
29+
return l.elasticLogger.LogRoundTrip(request, response, err, time, duration)
30+
}
31+
return nil
32+
}
33+
34+
func (l *Logger) RequestBodyEnabled() bool {
35+
return l.elasticLogger.RequestBodyEnabled()
36+
}
37+
38+
func (l *Logger) ResponseBodyEnabled() bool {
39+
return l.elasticLogger.ResponseBodyEnabled()
40+
}

transactions-consumer/main.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"time"
1313

1414
"github.com/ardanlabs/conf"
15+
"github.com/elastic/elastic-transport-go/v8/elastictransport"
1516
"github.com/elastic/go-elasticsearch/v8"
1617
"github.com/pkg/errors"
1718
"github.com/prometheus/client_golang/prometheus"
@@ -114,6 +115,11 @@ func run() error {
114115
RetryOnStatus: []int{502, 503, 504, 429},
115116
MaxRetries: cfg.Elastic.MaxRetries,
116117
RetryBackoff: calculateBackoff(),
118+
Logger: extern.NewLogger(&elastictransport.TextLogger{
119+
Output: os.Stdout,
120+
EnableRequestBody: false,
121+
EnableResponseBody: true, // Make response body available in the logger so we can log response
122+
}),
117123
})
118124
var elasticClient consume.ElasticDocumentClient
119125
if cfg.Elastic.Stub {

0 commit comments

Comments
 (0)