-
Notifications
You must be signed in to change notification settings - Fork 38
Expand file tree
/
Copy pathservice.go
More file actions
35 lines (30 loc) · 836 Bytes
/
service.go
File metadata and controls
35 lines (30 loc) · 836 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package elogger
import (
"github.com/viant/toolbox"
"net/http"
)
// Service represents a service event logger
type Service interface {
Log(http.ResponseWriter, *http.Request) error
}
type service struct {
logger *toolbox.FileLogger
}
// Log logs supplied request details
func (s *service) Log(writer http.ResponseWriter, request *http.Request) error {
message := NewMessage(request)
logMessage := &toolbox.LogMessage{MessageType: "elog", Message: message}
writer.Header().Set("Eventid", message.EventID)
writer.WriteHeader(http.StatusOK)
return s.logger.Log(logMessage)
}
// NewService creates a new service for supplied config.
func NewService(config *Config) (Service, error) {
logger, err := toolbox.NewFileLogger(config.LogTypes...)
if err != nil {
return nil, err
}
return &service{
logger: logger,
}, nil
}