-
Notifications
You must be signed in to change notification settings - Fork 38
Expand file tree
/
Copy pathmessage.go
More file actions
40 lines (37 loc) · 880 Bytes
/
message.go
File metadata and controls
40 lines (37 loc) · 880 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
36
37
38
39
40
package elogger
import (
"github.com/satori/go.uuid"
"github.com/viant/toolbox/bridge"
"net/http"
"strings"
"time"
)
// Message represent event log message
type Message struct {
Timestamp time.Time
EventType string
EventID string
ClientIP string
ServerIP string
Request *bridge.HttpRequest
Error string
}
// NewMessage creates a new message for provided request.
func NewMessage(request *http.Request) *Message {
var scheme = "http"
var result = &Message{
Timestamp: time.Now(),
ClientIP: request.RemoteAddr,
ServerIP: request.Host,
Request: &bridge.HttpRequest{
URL: scheme + "://" + request.Host + request.URL.String(),
Method: request.Method,
Header: request.Header,
},
}
result.EventType = strings.Trim(request.URL.Path, "/")
if UUID, err := uuid.NewV1(); err == nil {
result.EventID = UUID.String()
}
return result
}