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