diff --git a/MediaBrowser.Server.Implementations/HttpServer/HttpServer.cs b/MediaBrowser.Server.Implementations/HttpServer/HttpServer.cs index 913e2be598..3fff9b70eb 100644 --- a/MediaBrowser.Server.Implementations/HttpServer/HttpServer.cs +++ b/MediaBrowser.Server.Implementations/HttpServer/HttpServer.cs @@ -6,7 +6,7 @@ using MediaBrowser.Model.Logging; using ServiceStack.Api.Swagger; using ServiceStack.Common.Web; using ServiceStack.Configuration; -using ServiceStack.Logging.NLogger; +using ServiceStack.Logging; using ServiceStack.ServiceHost; using ServiceStack.ServiceInterface.Cors; using ServiceStack.Text; @@ -71,22 +71,25 @@ namespace MediaBrowser.Server.Implementations.HttpServer /// The name of the server. private string ServerName { get; set; } + /// + /// The _container adapter + /// private readonly ContainerAdapter _containerAdapter; /// /// Initializes a new instance of the class. /// /// The application host. - /// The logger. + /// The log manager. /// Name of the server. /// The default redirectpath. /// urlPrefix - public HttpServer(IApplicationHost applicationHost, ILogger logger, string serverName, string defaultRedirectpath) + public HttpServer(IApplicationHost applicationHost, ILogManager logManager, string serverName, string defaultRedirectpath) : base() { - if (logger == null) + if (logManager == null) { - throw new ArgumentNullException("logger"); + throw new ArgumentNullException("logManager"); } if (applicationHost == null) { @@ -103,18 +106,21 @@ namespace MediaBrowser.Server.Implementations.HttpServer ServerName = serverName; DefaultRedirectPath = defaultRedirectpath; - _logger = logger; + _logger = logManager.GetLogger("HttpServer"); + + ServiceStack.Logging.LogManager.LogFactory = new ServerLogFactory(logManager); - ServiceStack.Logging.LogManager.LogFactory = new NLogFactory(); - EndpointHostConfig.Instance.ServiceStackHandlerFactoryPath = null; EndpointHostConfig.Instance.MetadataRedirectPath = "metadata"; _containerAdapter = new ContainerAdapter(applicationHost); } + /// + /// The us culture + /// protected static readonly CultureInfo UsCulture = new CultureInfo("en-US"); - + /// /// Configures the specified container. /// @@ -124,7 +130,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer JsConfig.DateHandler = JsonDateHandler.ISO8601; JsConfig.ExcludeTypeInfo = true; JsConfig.IncludeNullValues = false; - + SetConfig(new EndpointHostConfig { DefaultRedirectPath = DefaultRedirectPath, @@ -382,7 +388,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer // This could fail, but try to add the stack trace as the body content try { - response.StatusCode = statusCode; + //response.StatusCode = statusCode; response.Headers.Add("Status", statusCode.ToString(new CultureInfo("en-US"))); @@ -392,8 +398,6 @@ namespace MediaBrowser.Server.Implementations.HttpServer response.Headers.Remove("Etag"); response.Headers.Remove("Last-Modified"); - response.ContentType = "text/plain"; - if (!string.IsNullOrEmpty(ex.Message)) { response.AddHeader("X-Application-Error-Code", ex.Message); @@ -408,7 +412,6 @@ namespace MediaBrowser.Server.Implementations.HttpServer sb.AppendLine("}"); sb.AppendLine("}"); - response.ContentType = ContentType.Json; var sbBytes = sb.ToString().ToUtf8Bytes(); response.OutputStream.Write(sbBytes, 0, sbBytes.Length); } @@ -418,7 +421,6 @@ namespace MediaBrowser.Server.Implementations.HttpServer } } - /// /// Overridable method that can be used to implement a custom hnandler /// @@ -466,7 +468,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer { return; } - + var statusode = ctx.Response.StatusCode; var log = new StringBuilder(); @@ -613,4 +615,228 @@ namespace MediaBrowser.Server.Implementations.HttpServer // Leave this empty so SS doesn't try to dispose our objects } } + + /// + /// Class ServerLogFactory + /// + public class ServerLogFactory : ILogFactory + { + /// + /// The _log manager + /// + private readonly ILogManager _logManager; + + /// + /// Initializes a new instance of the class. + /// + /// The log manager. + public ServerLogFactory(ILogManager logManager) + { + _logManager = logManager; + } + + /// + /// Gets the logger. + /// + /// Name of the type. + /// ILog. + public ILog GetLogger(string typeName) + { + return new ServerLogger(_logManager.GetLogger(typeName)); + } + + /// + /// Gets the logger. + /// + /// The type. + /// ILog. + public ILog GetLogger(Type type) + { + return GetLogger(type.Name); + } + } + + /// + /// Class ServerLogger + /// + public class ServerLogger : ILog + { + /// + /// The _logger + /// + private readonly ILogger _logger; + + /// + /// Initializes a new instance of the class. + /// + /// The logger. + public ServerLogger(ILogger logger) + { + _logger = logger; + } + + /// + /// Logs a Debug message and exception. + /// + /// The message. + /// The exception. + public void Debug(object message, Exception exception) + { + _logger.ErrorException(GetMesssage(message), exception); + } + + /// + /// Logs a Debug message. + /// + /// The message. + public void Debug(object message) + { + _logger.Debug(GetMesssage(message)); + } + + /// + /// Logs a Debug format message. + /// + /// The format. + /// The args. + public void DebugFormat(string format, params object[] args) + { + _logger.Debug(format, args); + } + + /// + /// Logs a Error message and exception. + /// + /// The message. + /// The exception. + public void Error(object message, Exception exception) + { + _logger.ErrorException(GetMesssage(message), exception); + } + + /// + /// Logs a Error message. + /// + /// The message. + public void Error(object message) + { + _logger.Error(GetMesssage(message)); + } + + /// + /// Logs a Error format message. + /// + /// The format. + /// The args. + public void ErrorFormat(string format, params object[] args) + { + _logger.Error(format, args); + } + + /// + /// Logs a Fatal message and exception. + /// + /// The message. + /// The exception. + public void Fatal(object message, Exception exception) + { + _logger.FatalException(GetMesssage(message), exception); + } + + /// + /// Logs a Fatal message. + /// + /// The message. + public void Fatal(object message) + { + _logger.Fatal(GetMesssage(message)); + } + + /// + /// Logs a Error format message. + /// + /// The format. + /// The args. + public void FatalFormat(string format, params object[] args) + { + _logger.Fatal(format, args); + } + + /// + /// Logs an Info message and exception. + /// + /// The message. + /// The exception. + public void Info(object message, Exception exception) + { + _logger.ErrorException(GetMesssage(message), exception); + } + + /// + /// Logs an Info message and exception. + /// + /// The message. + public void Info(object message) + { + _logger.Info(GetMesssage(message)); + } + + /// + /// Logs an Info format message. + /// + /// The format. + /// The args. + public void InfoFormat(string format, params object[] args) + { + _logger.Info(format, args); + } + + /// + /// Gets or sets a value indicating whether this instance is debug enabled. + /// + /// true if this instance is debug enabled; otherwise, false. + public bool IsDebugEnabled + { + get { return true; } + } + + /// + /// Logs a Warning message and exception. + /// + /// The message. + /// The exception. + public void Warn(object message, Exception exception) + { + _logger.ErrorException(GetMesssage(message), exception); + } + + /// + /// Logs a Warning message. + /// + /// The message. + public void Warn(object message) + { + _logger.Warn(GetMesssage(message)); + } + + /// + /// Logs a Warning format message. + /// + /// The format. + /// The args. + public void WarnFormat(string format, params object[] args) + { + _logger.Warn(format, args); + } + + /// + /// Gets the messsage. + /// + /// The o. + /// System.String. + private string GetMesssage(object o) + { + return o == null ? string.Empty : o.ToString(); + } + } } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/HttpServer/ServerFactory.cs b/MediaBrowser.Server.Implementations/HttpServer/ServerFactory.cs index ce9c376a5c..e953a3c6d4 100644 --- a/MediaBrowser.Server.Implementations/HttpServer/ServerFactory.cs +++ b/MediaBrowser.Server.Implementations/HttpServer/ServerFactory.cs @@ -13,13 +13,13 @@ namespace MediaBrowser.Server.Implementations.HttpServer /// Creates the server. /// /// The application host. - /// The logger. + /// The log manager. /// Name of the server. /// The default redirectpath. /// IHttpServer. - public static IHttpServer CreateServer(IApplicationHost applicationHost, ILogger logger, string serverName, string defaultRedirectpath) + public static IHttpServer CreateServer(IApplicationHost applicationHost, ILogManager logManager, string serverName, string defaultRedirectpath) { - return new HttpServer(applicationHost, logger, serverName, defaultRedirectpath); + return new HttpServer(applicationHost, logManager, serverName, defaultRedirectpath); } } } diff --git a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj index 286710bc32..9575269dc9 100644 --- a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj +++ b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj @@ -67,10 +67,6 @@ False ..\packages\ServiceStack.Common.3.9.43\lib\net35\ServiceStack.Interfaces.dll - - False - ..\packages\ServiceStack.Logging.NLog.1.0.8.0\lib\net35\ServiceStack.Logging.NLog.dll - False ..\packages\ServiceStack.OrmLite.SqlServer.3.9.43\lib\ServiceStack.OrmLite.dll diff --git a/MediaBrowser.Server.Implementations/packages.config b/MediaBrowser.Server.Implementations/packages.config index d975326f29..88876adbc1 100644 --- a/MediaBrowser.Server.Implementations/packages.config +++ b/MediaBrowser.Server.Implementations/packages.config @@ -11,7 +11,6 @@ - diff --git a/MediaBrowser.ServerApplication/ApplicationHost.cs b/MediaBrowser.ServerApplication/ApplicationHost.cs index 5ca6984f2d..94a06020e2 100644 --- a/MediaBrowser.ServerApplication/ApplicationHost.cs +++ b/MediaBrowser.ServerApplication/ApplicationHost.cs @@ -207,7 +207,7 @@ namespace MediaBrowser.ServerApplication { base.OnLoggerLoaded(); - _httpServerCreationTask = Task.Run(() => ServerFactory.CreateServer(this, Logger, "Media Browser", "index.html")); + _httpServerCreationTask = Task.Run(() => ServerFactory.CreateServer(this, LogManager, "Media Browser", "index.html")); } ///