45 lines
1.6 KiB
C#
45 lines
1.6 KiB
C#
using CommonSocketLibrary.Abstract;
|
|
using CommonSocketLibrary.Common;
|
|
using HermesSocketLibrary.Socket.Data;
|
|
using Serilog;
|
|
|
|
namespace TwitchChatTTS.Hermes.Socket.Handlers
|
|
{
|
|
public class LoggingHandler : IWebSocketHandler
|
|
{
|
|
private readonly ILogger _logger;
|
|
public int OperationCode { get; } = 5;
|
|
|
|
public LoggingHandler(ILogger logger)
|
|
{
|
|
_logger = logger;
|
|
}
|
|
|
|
public Task Execute<Data>(SocketClient<WebSocketMessage> sender, Data data)
|
|
{
|
|
if (data is not LoggingMessage message || message == null)
|
|
return Task.CompletedTask;
|
|
|
|
Action<Exception?, string> logging;
|
|
if (message.Level == HermesLoggingLevel.Trace)
|
|
logging = _logger.Verbose;
|
|
else if (message.Level == HermesLoggingLevel.Debug)
|
|
logging = _logger.Debug;
|
|
else if (message.Level == HermesLoggingLevel.Info)
|
|
logging = _logger.Information;
|
|
else if (message.Level == HermesLoggingLevel.Warn)
|
|
logging = _logger.Warning;
|
|
else if (message.Level == HermesLoggingLevel.Error)
|
|
logging = _logger.Error;
|
|
else if (message.Level == HermesLoggingLevel.Critical)
|
|
logging = _logger.Fatal;
|
|
else {
|
|
_logger.Warning("Failed to receive a logging level from client.");
|
|
return Task.CompletedTask;
|
|
}
|
|
|
|
logging.Invoke(message.Exception, message.Message);
|
|
return Task.CompletedTask;
|
|
}
|
|
}
|
|
} |