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") websocketLogger = getLogger("websocket")
nativeLogger = getLogger("native") nativeLogger = getLogger("native")
ntpLogger = getLogger("ntp") ntpLogger = getLogger("ntp")
displayLogger = getLogger("display")
usbLogger = getLogger("usb")
jsonRpcLogger = getLogger("jsonrpc") jsonRpcLogger = getLogger("jsonrpc")
watchdogLogger = getLogger("watchdog") watchdogLogger = getLogger("watchdog")
websecureLogger = getLogger("websecure") websecureLogger = getLogger("websecure")
otaLogger = getLogger("ota") otaLogger = getLogger("ota")
serialLogger = getLogger("serial") serialLogger = getLogger("serial")
terminalLogger = getLogger("terminal")
displayLogger = getLogger("display")
usbLogger = getLogger("usb")
// external components // external components
ginLogger = getLogger("gin") ginLogger = getLogger("gin")
) )

View File

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