Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Abstract Logger into interface and allow other loggers to be plugged in. #1

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions websocket-sharp/ILogger.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
using System;

namespace WebSocketSharp
{
public interface ILogger
{
string File { get; set; }
LogLevel Level { get; set; }
Action<LogData, string> 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);
}
}
2 changes: 1 addition & 1 deletion websocket-sharp/LogData.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
namespace WebSocketSharp
{
/// <summary>
/// Represents a log data used by the <see cref="Logger"/> class.
/// Represents a log data used by the <see cref="ILogger"/> class.
/// </summary>
public class LogData
{
Expand Down
6 changes: 5 additions & 1 deletion websocket-sharp/LogLevel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,10 @@ public enum LogLevel
/// <summary>
/// Specifies the top logging level.
/// </summary>
Fatal
Fatal,
/// <summary>
/// Specifies the ultimate logging level.
/// </summary>
None
}
}
9 changes: 8 additions & 1 deletion websocket-sharp/Logger.cs
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ namespace WebSocketSharp
/// delegate.
/// </para>
/// </remarks>
public class Logger
public class Logger : ILogger
{
#region Private Fields

Expand Down Expand Up @@ -263,11 +263,18 @@ public void Error (string message)
/// <summary>
/// Outputs <paramref name="message"/> as a log with <see cref="LogLevel.Fatal"/>.
/// </summary>
/// <remarks>
/// If the current logging level is higher than <see cref="LogLevel.Fatal"/>,
/// this method doesn't output <paramref name="message"/> as a log.
/// </remarks>
/// <param name="message">
/// A <see cref="string"/> that represents the message to output as a log.
/// </param>
public void Fatal (string message)
{
if (_level > LogLevel.Error)
return;

output (message, LogLevel.Fatal);
}

Expand Down
6 changes: 3 additions & 3 deletions websocket-sharp/Net/HttpListener.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -288,9 +288,9 @@ public static bool IsSupported {
/// values.
/// </remarks>
/// <value>
/// A <see cref="Logger"/> that provides the logging functions.
/// A <see cref="ILogger"/> that provides the logging functions.
/// </value>
public Logger Log {
public ILogger Log {
get {
return _logger;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ internal HttpListenerWebSocketContext (HttpListenerContext context, string proto

#region Internal Properties

internal Logger Log {
internal ILogger Log {
get {
return _context.Listener.Log;
}
Expand Down
8 changes: 4 additions & 4 deletions websocket-sharp/Net/WebSockets/TcpListenerWebSocketContext.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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) {
Expand Down Expand Up @@ -110,7 +110,7 @@ Logger logger

#region Internal Properties

internal Logger Log {
internal ILogger Log {
get {
return _logger;
}
Expand Down
10 changes: 7 additions & 3 deletions websocket-sharp/Server/HttpServer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -506,12 +506,16 @@ public bool KeepClean {
/// The default logging level is <see cref="LogLevel.Error"/>.
/// </remarks>
/// <value>
/// A <see cref="Logger"/> that provides the logging function.
/// A <see cref="ILogger"/> that provides the logging function.
/// </value>
public Logger Log {
public ILogger Log {
get {
return _log;
}
set {
if (value == null) throw new ArgumentOutOfRangeException(nameof(value));
_log = value;
}
}

/// <summary>
Expand Down
4 changes: 2 additions & 2 deletions websocket-sharp/Server/WebSocketBehavior.cs
Original file line number Diff line number Diff line change
Expand Up @@ -75,10 +75,10 @@ protected WebSocketBehavior ()
/// Gets the logging functions.
/// </summary>
/// <value>
/// A <see cref="Logger"/> that provides the logging functions,
/// A <see cref="ILogger"/> that provides the logging functions,
/// or <see langword="null"/> if the WebSocket connection isn't established.
/// </value>
protected Logger Log {
protected ILogger Log {
get {
return _websocket != null ? _websocket.Log : null;
}
Expand Down
10 changes: 7 additions & 3 deletions websocket-sharp/Server/WebSocketServer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -467,12 +467,16 @@ public bool KeepClean {
/// The default logging level is <see cref="LogLevel.Error"/>.
/// </remarks>
/// <value>
/// A <see cref="Logger"/> that provides the logging function.
/// A <see cref="ILogger"/> that provides the logging function.
/// </value>
public Logger Log {
public ILogger Log {
get {
return _log;
}
set {
if (value == null) throw new ArgumentOutOfRangeException(nameof(value));
_log = value;
}
}

/// <summary>
Expand Down
10 changes: 5 additions & 5 deletions websocket-sharp/Server/WebSocketServiceHost.cs
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public abstract class WebSocketServiceHost
{
#region Private Fields

private Logger _log;
private ILogger _log;
private string _path;
private WebSocketSessionManager _sessions;

Expand All @@ -66,9 +66,9 @@ public abstract class WebSocketServiceHost
/// A <see cref="string"/> that represents the absolute path to the service.
/// </param>
/// <param name="log">
/// A <see cref="Logger"/> that represents the logging function for the service.
/// A <see cref="ILogger"/> that represents the logging function for the service.
/// </param>
protected WebSocketServiceHost (string path, Logger log)
protected WebSocketServiceHost (string path, ILogger log)
{
_path = path;
_log = log;
Expand All @@ -94,9 +94,9 @@ internal ServerState State {
/// Gets the logging function for the service.
/// </summary>
/// <value>
/// A <see cref="Logger"/> that provides the logging function.
/// A <see cref="ILogger"/> that provides the logging function.
/// </value>
protected Logger Log {
protected ILogger Log {
get {
return _log;
}
Expand Down
4 changes: 2 additions & 2 deletions websocket-sharp/Server/WebSocketServiceHost`1.cs
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ internal class WebSocketServiceHost<TBehavior> : WebSocketServiceHost
#region Internal Constructors

internal WebSocketServiceHost (
string path, Func<TBehavior> creator, Logger log
string path, Func<TBehavior> creator, ILogger log
)
: this (path, creator, null, log)
{
Expand All @@ -52,7 +52,7 @@ internal WebSocketServiceHost (
string path,
Func<TBehavior> creator,
Action<TBehavior> initializer,
Logger log
ILogger log
)
: base (path, log)
{
Expand Down
4 changes: 2 additions & 2 deletions websocket-sharp/Server/WebSocketServiceManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ public class WebSocketServiceManager

private volatile bool _clean;
private Dictionary<string, WebSocketServiceHost> _hosts;
private Logger _log;
private ILogger _log;
private volatile ServerState _state;
private object _sync;
private TimeSpan _waitTime;
Expand All @@ -58,7 +58,7 @@ public class WebSocketServiceManager

#region Internal Constructors

internal WebSocketServiceManager (Logger log)
internal WebSocketServiceManager (ILogger log)
{
_log = log;

Expand Down
4 changes: 2 additions & 2 deletions websocket-sharp/Server/WebSocketSessionManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public class WebSocketSessionManager

private volatile bool _clean;
private object _forSweep;
private Logger _log;
private ILogger _log;
private Dictionary<string, IWebSocketSession> _sessions;
private volatile ServerState _state;
private volatile bool _sweeping;
Expand All @@ -62,7 +62,7 @@ public class WebSocketSessionManager

#region Internal Constructors

internal WebSocketSessionManager (Logger log)
internal WebSocketSessionManager (ILogger log)
{
_log = log;

Expand Down
9 changes: 5 additions & 4 deletions websocket-sharp/WebSocket.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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<MessageEventArgs> _message;
private Queue<MessageEventArgs> _messageEventQueue;
Expand Down Expand Up @@ -511,14 +511,15 @@ public bool IsSecure {
/// values.
/// </remarks>
/// <value>
/// A <see cref="Logger"/> that provides the logging functions.
/// A <see cref="ILogger"/> that provides the logging functions.
/// </value>
public Logger Log {
public ILogger Log {
get {
return _logger;
}

internal set {
set {
if (value == null) throw new ArgumentOutOfRangeException(nameof(value));
_logger = value;
}
}
Expand Down