From 7c90027578c271f4dd8d7106181406a499157ba8 Mon Sep 17 00:00:00 2001 From: Andrew Welker Date: Fri, 26 Sep 2025 21:47:06 -0500 Subject: [PATCH] feat: set direct server debug level via console command The `mobilewsdebug` console command can now be used to set the internal websocket logging level for both the API client and the direct server at the same time. --- .../MobileControlSystemController.cs | 45 ++++++++++++++----- .../MobileControlWebsocketServer.cs | 6 +++ 2 files changed, 39 insertions(+), 12 deletions(-) diff --git a/src/PepperDash.Essentials.MobileControl/MobileControlSystemController.cs b/src/PepperDash.Essentials.MobileControl/MobileControlSystemController.cs index bd04b0e3..73861291 100644 --- a/src/PepperDash.Essentials.MobileControl/MobileControlSystemController.cs +++ b/src/PepperDash.Essentials.MobileControl/MobileControlSystemController.cs @@ -1353,11 +1353,30 @@ namespace PepperDash.Essentials { Log = { - Output = (data, s) => - this.LogDebug( - "Message from websocket: {message}", - data - ) + Output = (data, message) => + { + switch (data.Level) + { + case LogLevel.Trace: + this.LogVerbose(data.Message); + break; + case LogLevel.Debug: + this.LogDebug(data.Message); + break; + case LogLevel.Info: + this.LogInformation(data.Message); + break; + case LogLevel.Warn: + this.LogWarning(data.Message); + break; + case LogLevel.Error: + this.LogError(data.Message); + break; + case LogLevel.Fatal: + this.LogFatal(data.Message); + break; + } + } } }; @@ -1401,13 +1420,13 @@ namespace PepperDash.Essentials private void SetWebsocketDebugLevel(string cmdparameters) { - if (CrestronEnvironment.ProgramCompatibility == eCrestronSeries.Series4) - { - this.LogInformation( - "Setting websocket log level not currently allowed on 4 series." - ); - return; // Web socket log level not currently allowed in series4 - } + // if (CrestronEnvironment.ProgramCompatibility == eCrestronSeries.Series4) + // { + // this.LogInformation( + // "Setting websocket log level not currently allowed on 4 series." + // ); + // return; // Web socket log level not currently allowed in series4 + // } if (string.IsNullOrEmpty(cmdparameters)) { @@ -1433,6 +1452,8 @@ namespace PepperDash.Essentials _wsClient2.Log.Level = _wsLogLevel; } + _directServer?.SetWebsocketLogLevel(_wsLogLevel); + CrestronConsole.ConsoleCommandResponse($"Websocket log level set to {debugLevel}"); } catch diff --git a/src/PepperDash.Essentials.MobileControl/WebSocketServer/MobileControlWebsocketServer.cs b/src/PepperDash.Essentials.MobileControl/WebSocketServer/MobileControlWebsocketServer.cs index eb60857e..d15185b0 100644 --- a/src/PepperDash.Essentials.MobileControl/WebSocketServer/MobileControlWebsocketServer.cs +++ b/src/PepperDash.Essentials.MobileControl/WebSocketServer/MobileControlWebsocketServer.cs @@ -326,6 +326,12 @@ namespace PepperDash.Essentials.WebSocketServer } } + public void SetWebsocketLogLevel(LogLevel level) + { + CrestronConsole.ConsoleCommandResponse($"Setting direct server debug level to {level}", level.ToString()); + _server.Log.Level = level; + } + private void AddClientsForTouchpanels() { var touchpanels = DeviceManager.AllDevices