Chore: merge branch 'ong-dev' into with-tun
This commit is contained in:
commit
ca4961a146
@ -209,16 +209,26 @@ func getLogs(w http.ResponseWriter, r *http.Request) {
|
||||
render.Status(r, http.StatusOK)
|
||||
}
|
||||
|
||||
ch := make(chan log.Event, 1024)
|
||||
sub := log.Subscribe()
|
||||
defer log.UnSubscribe(sub)
|
||||
buf := &bytes.Buffer{}
|
||||
var err error
|
||||
for elm := range sub {
|
||||
buf.Reset()
|
||||
logM := elm
|
||||
|
||||
go func() {
|
||||
for elm := range sub {
|
||||
select {
|
||||
case ch <- elm:
|
||||
default:
|
||||
}
|
||||
}
|
||||
close(ch)
|
||||
}()
|
||||
|
||||
for logM := range ch {
|
||||
if logM.LogLevel < level {
|
||||
continue
|
||||
}
|
||||
buf.Reset()
|
||||
|
||||
if err := json.NewEncoder(buf).Encode(Log{
|
||||
Type: logM.Type(),
|
||||
@ -227,6 +237,7 @@ func getLogs(w http.ResponseWriter, r *http.Request) {
|
||||
break
|
||||
}
|
||||
|
||||
var err error
|
||||
if wsConn == nil {
|
||||
_, err = w.Write(buf.Bytes())
|
||||
w.(http.Flusher).Flush()
|
||||
|
16
log/log.go
16
log/log.go
@ -10,8 +10,8 @@ import (
|
||||
)
|
||||
|
||||
var (
|
||||
logCh = make(chan *Event)
|
||||
source = observable.NewObservable[*Event](logCh)
|
||||
logCh = make(chan Event)
|
||||
source = observable.NewObservable[Event](logCh)
|
||||
level = INFO
|
||||
)
|
||||
|
||||
@ -25,7 +25,7 @@ type Event struct {
|
||||
Payload string
|
||||
}
|
||||
|
||||
func (e *Event) Type() string {
|
||||
func (e Event) Type() string {
|
||||
return e.LogLevel.String()
|
||||
}
|
||||
|
||||
@ -57,12 +57,12 @@ func Fatalln(format string, v ...any) {
|
||||
log.Fatalf(format, v...)
|
||||
}
|
||||
|
||||
func Subscribe() observable.Subscription[*Event] {
|
||||
func Subscribe() observable.Subscription[Event] {
|
||||
sub, _ := source.Subscribe()
|
||||
return sub
|
||||
}
|
||||
|
||||
func UnSubscribe(sub observable.Subscription[*Event]) {
|
||||
func UnSubscribe(sub observable.Subscription[Event]) {
|
||||
source.UnSubscribe(sub)
|
||||
}
|
||||
|
||||
@ -74,7 +74,7 @@ func SetLevel(newLevel LogLevel) {
|
||||
level = newLevel
|
||||
}
|
||||
|
||||
func print(data *Event) {
|
||||
func print(data Event) {
|
||||
if data.LogLevel < level {
|
||||
return
|
||||
}
|
||||
@ -91,8 +91,8 @@ func print(data *Event) {
|
||||
}
|
||||
}
|
||||
|
||||
func newLog(logLevel LogLevel, format string, v ...any) *Event {
|
||||
return &Event{
|
||||
func newLog(logLevel LogLevel, format string, v ...any) Event {
|
||||
return Event{
|
||||
LogLevel: logLevel,
|
||||
Payload: fmt.Sprintf(format, v...),
|
||||
}
|
||||
|
Reference in New Issue
Block a user