log.go 666 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. package main
  2. import "C"
  3. import (
  4. "github.com/metacubex/mihomo/common/observable"
  5. "github.com/metacubex/mihomo/log"
  6. )
  7. var logSubscriber observable.Subscription[log.Event]
  8. //export startLog
  9. func startLog() {
  10. if logSubscriber != nil {
  11. log.UnSubscribe(logSubscriber)
  12. logSubscriber = nil
  13. }
  14. logSubscriber = log.Subscribe()
  15. go func() {
  16. for logData := range logSubscriber {
  17. if logData.LogLevel < log.Level() {
  18. continue
  19. }
  20. message := &Message{
  21. Type: LogMessage,
  22. Data: logData,
  23. }
  24. SendMessage(*message)
  25. }
  26. }()
  27. }
  28. //export stopLog
  29. func stopLog() {
  30. if logSubscriber != nil {
  31. log.UnSubscribe(logSubscriber)
  32. logSubscriber = nil
  33. }
  34. }