mirror of
https://github.com/idanoo/autobrr
synced 2025-07-23 08:49:13 +00:00
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:
parent
11fcf1ead9
commit
09eb0b1716
14 changed files with 213 additions and 26 deletions
|
@ -7,12 +7,13 @@ import (
|
|||
|
||||
"github.com/autobrr/autobrr/internal/domain"
|
||||
|
||||
"github.com/r3labs/sse/v2"
|
||||
"github.com/rs/zerolog"
|
||||
"github.com/rs/zerolog/log"
|
||||
"gopkg.in/natefinch/lumberjack.v2"
|
||||
)
|
||||
|
||||
func Setup(cfg domain.Config) {
|
||||
func Setup(cfg domain.Config, sse *sse.Server) {
|
||||
zerolog.TimeFieldFormat = time.RFC3339
|
||||
|
||||
switch cfg.LogLevel {
|
||||
|
@ -47,6 +48,7 @@ func Setup(cfg domain.Config) {
|
|||
writers = io.MultiWriter(consoleWriter, fileWriter)
|
||||
}
|
||||
|
||||
log.Logger = log.Hook(&ServerSentEventHook{sse: sse})
|
||||
log.Logger = log.Output(writers)
|
||||
|
||||
log.Print("Starting autobrr")
|
||||
|
|
43
internal/logger/ssehook.go
Normal file
43
internal/logger/ssehook.go
Normal 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()),
|
||||
})
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue