feat: exposes methods to control wssv

This commit is contained in:
Neil Dorin
2023-11-06 16:56:51 -07:00
parent baa54e40b2
commit 0266edda05
2 changed files with 24 additions and 8 deletions

View File

@@ -109,9 +109,9 @@ namespace PepperDash.Core
// Instantiate the root logger // Instantiate the root logger
_logger = new LoggerConfiguration() _logger = new LoggerConfiguration()
.WriteTo.Logger(lc => lc //.WriteTo.Logger(lc => lc
.WriteTo.Console(levelSwitch: _consoleLoggingLevelSwitch)) //.WriteTo.Console(levelSwitch: _consoleLoggingLevelSwitch))
.WriteTo.Sink(new DebugWebsocketSink(), levelSwitch: _websocketLoggingLevelSwitch) .WriteTo.Sink(new DebugWebsocketSink(), levelSwitch: _websocketLoggingLevelSwitch)
.WriteTo.File(@"\user\debug\global-log-{Date}.txt" .WriteTo.File(@"\user\debug\global-log-{Date}.txt"
, rollingInterval: RollingInterval.Day , rollingInterval: RollingInterval.Day
, restrictedToMinimumLevel: Serilog.Events.LogEventLevel.Debug) , restrictedToMinimumLevel: Serilog.Events.LogEventLevel.Debug)
@@ -218,7 +218,7 @@ namespace PepperDash.Core
if (programEventType == eProgramStatusEventType.Stopping) if (programEventType == eProgramStatusEventType.Stopping)
{ {
//_logger.CloseAndFlush(); Log.CloseAndFlush();
if (_saveTimer != null) if (_saveTimer != null)
{ {
@@ -370,9 +370,12 @@ namespace PepperDash.Core
/// <param name="level"> Valid values 0 (no debug), 1 (critical), 2 (all messages)</param> /// <param name="level"> Valid values 0 (no debug), 1 (critical), 2 (all messages)</param>
public static void SetDebugLevel(int level) public static void SetDebugLevel(int level)
{ {
if (level <= 2) _consoleLoggingLevelSwitch.MinimumLevel = (LogEventLevel)level;
if (level <= 5)
{ {
Level = level; Level = level;
_contexts.GetOrCreateItem("DEFAULT").Level = level; _contexts.GetOrCreateItem("DEFAULT").Level = level;
SaveMemoryOnTimeout(); SaveMemoryOnTimeout();

View File

@@ -13,20 +13,33 @@ namespace PepperDash.Core
{ {
public class DebugWebsocketSink : ILogEventSink public class DebugWebsocketSink : ILogEventSink
{ {
public WebSocketServer WSSV { get; private set; } private WebSocketServer _wssv { get; private set; }
private readonly IFormatProvider _formatProvider; private readonly IFormatProvider _formatProvider;
public DebugWebsocketSink() public DebugWebsocketSink()
{ {
WSSV = new WebSocketServer(); _wssv = new WebSocketServer();
} }
public void Emit(LogEvent logEvent) public void Emit(LogEvent logEvent)
{ {
if (_wssv == null || !_wssv.IsListening) return;
var message = logEvent.RenderMessage(_formatProvider); var message = logEvent.RenderMessage(_formatProvider);
WSSV.WebSocketServices.Broadcast(message); _wssv.WebSocketServices.Broadcast(message);
}
public void StartServerAndSetPort(int port)
{
_wssv = new WebSocketServer(port);
_wssv.Start();
}
public void StopServer()
{
_wssv.Stop();
} }
} }