diff --git a/websocket-sharp/ILogger.cs b/websocket-sharp/ILogger.cs new file mode 100644 index 000000000..b9492faa5 --- /dev/null +++ b/websocket-sharp/ILogger.cs @@ -0,0 +1,18 @@ +using System; + +namespace WebSocketSharp +{ + public interface ILogger + { + string File { get; set; } + LogLevel Level { get; set; } + Action Output { get; set; } + + void Debug (string message); + void Error (string message); + void Fatal (string message); + void Info (string message); + void Trace (string message); + void Warn (string message); + } +} \ No newline at end of file diff --git a/websocket-sharp/LogData.cs b/websocket-sharp/LogData.cs index 9c0843093..92c9f6000 100644 --- a/websocket-sharp/LogData.cs +++ b/websocket-sharp/LogData.cs @@ -33,7 +33,7 @@ namespace WebSocketSharp { /// - /// Represents a log data used by the class. + /// Represents a log data used by the class. /// public class LogData { diff --git a/websocket-sharp/LogLevel.cs b/websocket-sharp/LogLevel.cs index ef9967728..f732fe027 100644 --- a/websocket-sharp/LogLevel.cs +++ b/websocket-sharp/LogLevel.cs @@ -58,6 +58,10 @@ public enum LogLevel /// /// Specifies the top logging level. /// - Fatal + Fatal, + /// + /// Specifies the ultimate logging level. + /// + None } } diff --git a/websocket-sharp/Logger.cs b/websocket-sharp/Logger.cs index 17850e67e..99754b82a 100644 --- a/websocket-sharp/Logger.cs +++ b/websocket-sharp/Logger.cs @@ -50,7 +50,7 @@ namespace WebSocketSharp /// delegate. /// /// - public class Logger + public class Logger : ILogger { #region Private Fields @@ -263,11 +263,18 @@ public void Error (string message) /// /// Outputs as a log with . /// + /// + /// If the current logging level is higher than , + /// this method doesn't output as a log. + /// /// /// A that represents the message to output as a log. /// public void Fatal (string message) { + if (_level > LogLevel.Error) + return; + output (message, LogLevel.Fatal); } diff --git a/websocket-sharp/Net/HttpListener.cs b/websocket-sharp/Net/HttpListener.cs index 07970e14d..99a189c24 100644 --- a/websocket-sharp/Net/HttpListener.cs +++ b/websocket-sharp/Net/HttpListener.cs @@ -74,7 +74,7 @@ public sealed class HttpListener : IDisposable private bool _disposed; private bool _ignoreWriteExceptions; private volatile bool _listening; - private Logger _logger; + private ILogger _logger; private HttpListenerPrefixCollection _prefixes; private string _realm; private bool _reuseAddress; @@ -288,9 +288,9 @@ public static bool IsSupported { /// values. /// /// - /// A that provides the logging functions. + /// A that provides the logging functions. /// - public Logger Log { + public ILogger Log { get { return _logger; } diff --git a/websocket-sharp/Net/WebSockets/HttpListenerWebSocketContext.cs b/websocket-sharp/Net/WebSockets/HttpListenerWebSocketContext.cs index 86e4ff053..a55efbaf3 100644 --- a/websocket-sharp/Net/WebSockets/HttpListenerWebSocketContext.cs +++ b/websocket-sharp/Net/WebSockets/HttpListenerWebSocketContext.cs @@ -59,7 +59,7 @@ internal HttpListenerWebSocketContext (HttpListenerContext context, string proto #region Internal Properties - internal Logger Log { + internal ILogger Log { get { return _context.Listener.Log; } diff --git a/websocket-sharp/Net/WebSockets/TcpListenerWebSocketContext.cs b/websocket-sharp/Net/WebSockets/TcpListenerWebSocketContext.cs index b177c1c51..f0f89b545 100644 --- a/websocket-sharp/Net/WebSockets/TcpListenerWebSocketContext.cs +++ b/websocket-sharp/Net/WebSockets/TcpListenerWebSocketContext.cs @@ -53,7 +53,7 @@ internal class TcpListenerWebSocketContext : WebSocketContext #region Private Fields private CookieCollection _cookies; - private Logger _logger; + private ILogger _logger; private NameValueCollection _queryString; private HttpRequest _request; private bool _secure; @@ -72,12 +72,12 @@ internal TcpListenerWebSocketContext ( string protocol, bool secure, ServerSslConfiguration sslConfig, - Logger logger + ILogger ILogger ) { _tcpClient = tcpClient; _secure = secure; - _logger = logger; + _logger = ILogger; var netStream = tcpClient.GetStream (); if (secure) { @@ -110,7 +110,7 @@ Logger logger #region Internal Properties - internal Logger Log { + internal ILogger Log { get { return _logger; } diff --git a/websocket-sharp/Server/HttpServer.cs b/websocket-sharp/Server/HttpServer.cs index 95043dcc8..bf748d450 100644 --- a/websocket-sharp/Server/HttpServer.cs +++ b/websocket-sharp/Server/HttpServer.cs @@ -66,7 +66,7 @@ public class HttpServer private string _docRootPath; private string _hostname; private HttpListener _listener; - private Logger _log; + private ILogger _log; private int _port; private Thread _receiveThread; private bool _secure; @@ -506,12 +506,16 @@ public bool KeepClean { /// The default logging level is . /// /// - /// A that provides the logging function. + /// A that provides the logging function. /// - public Logger Log { + public ILogger Log { get { return _log; } + set { + if (value == null) throw new ArgumentOutOfRangeException(nameof(value)); + _log = value; + } } /// diff --git a/websocket-sharp/Server/WebSocketBehavior.cs b/websocket-sharp/Server/WebSocketBehavior.cs index 3bdb4e3c3..ebd0e3432 100644 --- a/websocket-sharp/Server/WebSocketBehavior.cs +++ b/websocket-sharp/Server/WebSocketBehavior.cs @@ -75,10 +75,10 @@ protected WebSocketBehavior () /// Gets the logging functions. /// /// - /// A that provides the logging functions, + /// A that provides the logging functions, /// or if the WebSocket connection isn't established. /// - protected Logger Log { + protected ILogger Log { get { return _websocket != null ? _websocket.Log : null; } diff --git a/websocket-sharp/Server/WebSocketServer.cs b/websocket-sharp/Server/WebSocketServer.cs index 7e1d4df57..101ad9ea7 100644 --- a/websocket-sharp/Server/WebSocketServer.cs +++ b/websocket-sharp/Server/WebSocketServer.cs @@ -65,7 +65,7 @@ public class WebSocketServer private bool _dnsStyle; private string _hostname; private TcpListener _listener; - private Logger _log; + private ILogger _log; private int _port; private string _realm; private string _realmInUse; @@ -467,12 +467,16 @@ public bool KeepClean { /// The default logging level is . /// /// - /// A that provides the logging function. + /// A that provides the logging function. /// - public Logger Log { + public ILogger Log { get { return _log; } + set { + if (value == null) throw new ArgumentOutOfRangeException(nameof(value)); + _log = value; + } } /// diff --git a/websocket-sharp/Server/WebSocketServiceHost.cs b/websocket-sharp/Server/WebSocketServiceHost.cs index 1da76427a..dc2937df6 100644 --- a/websocket-sharp/Server/WebSocketServiceHost.cs +++ b/websocket-sharp/Server/WebSocketServiceHost.cs @@ -50,7 +50,7 @@ public abstract class WebSocketServiceHost { #region Private Fields - private Logger _log; + private ILogger _log; private string _path; private WebSocketSessionManager _sessions; @@ -66,9 +66,9 @@ public abstract class WebSocketServiceHost /// A that represents the absolute path to the service. /// /// - /// A that represents the logging function for the service. + /// A that represents the logging function for the service. /// - protected WebSocketServiceHost (string path, Logger log) + protected WebSocketServiceHost (string path, ILogger log) { _path = path; _log = log; @@ -94,9 +94,9 @@ internal ServerState State { /// Gets the logging function for the service. /// /// - /// A that provides the logging function. + /// A that provides the logging function. /// - protected Logger Log { + protected ILogger Log { get { return _log; } diff --git a/websocket-sharp/Server/WebSocketServiceHost`1.cs b/websocket-sharp/Server/WebSocketServiceHost`1.cs index d4ca6a2d1..54e27eb68 100644 --- a/websocket-sharp/Server/WebSocketServiceHost`1.cs +++ b/websocket-sharp/Server/WebSocketServiceHost`1.cs @@ -42,7 +42,7 @@ internal class WebSocketServiceHost : WebSocketServiceHost #region Internal Constructors internal WebSocketServiceHost ( - string path, Func creator, Logger log + string path, Func creator, ILogger log ) : this (path, creator, null, log) { @@ -52,7 +52,7 @@ internal WebSocketServiceHost ( string path, Func creator, Action initializer, - Logger log + ILogger log ) : base (path, log) { diff --git a/websocket-sharp/Server/WebSocketServiceManager.cs b/websocket-sharp/Server/WebSocketServiceManager.cs index 8706f58fe..e6578393c 100644 --- a/websocket-sharp/Server/WebSocketServiceManager.cs +++ b/websocket-sharp/Server/WebSocketServiceManager.cs @@ -49,7 +49,7 @@ public class WebSocketServiceManager private volatile bool _clean; private Dictionary _hosts; - private Logger _log; + private ILogger _log; private volatile ServerState _state; private object _sync; private TimeSpan _waitTime; @@ -58,7 +58,7 @@ public class WebSocketServiceManager #region Internal Constructors - internal WebSocketServiceManager (Logger log) + internal WebSocketServiceManager (ILogger log) { _log = log; diff --git a/websocket-sharp/Server/WebSocketSessionManager.cs b/websocket-sharp/Server/WebSocketSessionManager.cs index 32d59c85e..47931aa51 100644 --- a/websocket-sharp/Server/WebSocketSessionManager.cs +++ b/websocket-sharp/Server/WebSocketSessionManager.cs @@ -50,7 +50,7 @@ public class WebSocketSessionManager private volatile bool _clean; private object _forSweep; - private Logger _log; + private ILogger _log; private Dictionary _sessions; private volatile ServerState _state; private volatile bool _sweeping; @@ -62,7 +62,7 @@ public class WebSocketSessionManager #region Internal Constructors - internal WebSocketSessionManager (Logger log) + internal WebSocketSessionManager (ILogger log) { _log = log; diff --git a/websocket-sharp/WebSocket.cs b/websocket-sharp/WebSocket.cs index e1622d70e..fc69d4596 100644 --- a/websocket-sharp/WebSocket.cs +++ b/websocket-sharp/WebSocket.cs @@ -92,7 +92,7 @@ public class WebSocket : IDisposable private bool _ignoreExtensions; private bool _inContinuation; private volatile bool _inMessage; - private volatile Logger _logger; + private volatile ILogger _logger; private static readonly int _maxRetryCountForConnect; private Action _message; private Queue _messageEventQueue; @@ -511,14 +511,15 @@ public bool IsSecure { /// values. /// /// - /// A that provides the logging functions. + /// A that provides the logging functions. /// - public Logger Log { + public ILogger Log { get { return _logger; } - internal set { + set { + if (value == null) throw new ArgumentOutOfRangeException(nameof(value)); _logger = value; } }