chore(log): add terminalLogger

This commit is contained in:
Siyuan Miao 2025-04-11 07:58:11 +02:00
parent 612c50bfe2
commit d5f8e51a14
2 changed files with 16 additions and 7 deletions

5
log.go
View File

@ -47,13 +47,14 @@ var (
websocketLogger = getLogger("websocket")
nativeLogger = getLogger("native")
ntpLogger = getLogger("ntp")
displayLogger = getLogger("display")
usbLogger = getLogger("usb")
jsonRpcLogger = getLogger("jsonrpc")
watchdogLogger = getLogger("watchdog")
websecureLogger = getLogger("websecure")
otaLogger = getLogger("ota")
serialLogger = getLogger("serial")
terminalLogger = getLogger("terminal")
displayLogger = getLogger("display")
usbLogger = getLogger("usb")
// external components
ginLogger = getLogger("gin")
)

View File

@ -16,6 +16,9 @@ type TerminalSize struct {
}
func handleTerminalChannel(d *webrtc.DataChannel) {
scopedLogger := terminalLogger.With().
Uint16("data_channel_id", *d.ID()).Logger()
var ptmx *os.File
var cmd *exec.Cmd
d.OnOpen(func() {
@ -23,7 +26,7 @@ func handleTerminalChannel(d *webrtc.DataChannel) {
var err error
ptmx, err = pty.Start(cmd)
if err != nil {
logger.Warn().Err(err).Msg("Failed to start pty")
scopedLogger.Warn().Err(err).Msg("Failed to start pty")
d.Close()
return
}
@ -34,13 +37,13 @@ func handleTerminalChannel(d *webrtc.DataChannel) {
n, err := ptmx.Read(buf)
if err != nil {
if err != io.EOF {
logger.Warn().Err(err).Msg("Failed to read from pty")
scopedLogger.Warn().Err(err).Msg("Failed to read from pty")
}
break
}
err = d.Send(buf[:n])
if err != nil {
logger.Warn().Err(err).Msg("Failed to send pty output")
scopedLogger.Warn().Err(err).Msg("Failed to send pty output")
break
}
}
@ -63,11 +66,11 @@ func handleTerminalChannel(d *webrtc.DataChannel) {
return
}
}
logger.Warn().Err(err).Msg("Failed to parse terminal size")
scopedLogger.Warn().Err(err).Msg("Failed to parse terminal size")
}
_, err := ptmx.Write(msg.Data)
if err != nil {
logger.Warn().Err(err).Msg("Failed to write to pty")
scopedLogger.Warn().Err(err).Msg("Failed to write to pty")
}
})
@ -78,5 +81,10 @@ func handleTerminalChannel(d *webrtc.DataChannel) {
if cmd != nil && cmd.Process != nil {
_ = cmd.Process.Kill()
}
scopedLogger.Info().Msg("Terminal channel closed")
})
d.OnError(func(err error) {
scopedLogger.Warn().Err(err).Msg("Terminal channel error")
})
}