Feature: Tail live logs (#27)

* chore: add new yarn.lock

* chore: add pkgs

* feat: push events via server-sent-events

* feat(web): tail live logs

* fix: update irc network

* fix: set baseurl

* fix: headers
This commit is contained in:
Ludvig Lundgren 2021-09-07 22:23:27 +02:00 committed by GitHub
parent 11fcf1ead9
commit 09eb0b1716
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
14 changed files with 213 additions and 26 deletions

View file

@ -0,0 +1,43 @@
package logger
import (
"encoding/json"
"strings"
"time"
"github.com/r3labs/sse/v2"
"github.com/rs/zerolog"
)
type LogMessage struct {
Time string `json:"time"`
Level string `json:"level"`
Message string `json:"message"`
}
func (m LogMessage) ToJsonString() string {
j, err := json.Marshal(m)
if err != nil {
return ""
}
return string(j)
}
type ServerSentEventHook struct {
sse *sse.Server
}
func (h *ServerSentEventHook) Run(e *zerolog.Event, level zerolog.Level, msg string) {
if h.sse != nil {
// publish too logs topic
logMsg := LogMessage{
Time: time.Now().Format(time.RFC3339),
Level: strings.ToUpper(level.String()),
Message: msg,
}
h.sse.Publish("logs", &sse.Event{
Data: []byte(logMsg.ToJsonString()),
})
}
}