From 247a40fa614241b52babb29bc03b0afd9a9031f9 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 8 Jan 2014 23:44:51 -0500 Subject: [PATCH] add console logging during startup --- .../Logging/NlogManager.cs | 23 +++++++++++- MediaBrowser.Common/Net/IServerManager.cs | 4 +- .../IServerApplicationHost.cs | 6 --- MediaBrowser.Controller/Net/IHttpServer.cs | 6 +-- MediaBrowser.Model/Logging/ILogManager.cs | 10 +++++ MediaBrowser.Mono.userprefs | 3 +- .../ImagesByName/ImageUtils.cs | 3 +- .../HttpServer/HttpListenerHost.cs | 37 +++++++++---------- .../ServerManager/ServerManager.cs | 14 ++----- MediaBrowser.Server.Mono/Program.cs | 1 + .../ApplicationHost.cs | 21 ++++++++--- MediaBrowser.ServerApplication/MainStartup.cs | 1 + 12 files changed, 79 insertions(+), 50 deletions(-) diff --git a/MediaBrowser.Common.Implementations/Logging/NlogManager.cs b/MediaBrowser.Common.Implementations/Logging/NlogManager.cs index fb7fd1698e..40dc380ea8 100644 --- a/MediaBrowser.Common.Implementations/Logging/NlogManager.cs +++ b/MediaBrowser.Common.Implementations/Logging/NlogManager.cs @@ -187,7 +187,7 @@ namespace MediaBrowser.Common.Implementations.Logging LogFilePath = Path.Combine(LogDirectory, LogFilePrefix + "-" + decimal.Round(DateTime.Now.Ticks / 10000000) + ".log"); Directory.CreateDirectory(Path.GetDirectoryName(LogFilePath)); - + AddFileTarget(LogFilePath, level); LogSeverity = level; @@ -212,5 +212,26 @@ namespace MediaBrowser.Common.Implementations.Logging { LogManager.Flush(); } + + + public void AddConsoleOutput() + { + var target = new ConsoleTarget() + { + Layout = "${level}, ${logger}, ${message}", + Error = false + }; + + RemoveTarget("ConsoleTarget"); + + target.Name = "ConsoleTarget"; + + AddLogTarget(target, LogSeverity); + } + + public void RemoveConsoleOutput() + { + RemoveTarget("ConsoleTarget"); + } } } diff --git a/MediaBrowser.Common/Net/IServerManager.cs b/MediaBrowser.Common/Net/IServerManager.cs index 6965677bbf..f81c99ac65 100644 --- a/MediaBrowser.Common/Net/IServerManager.cs +++ b/MediaBrowser.Common/Net/IServerManager.cs @@ -25,9 +25,9 @@ namespace MediaBrowser.Common.Net /// /// Starts this instance. /// - /// The URL prefix. + /// The URL prefixes. /// if set to true [enable HTTP logging]. - void Start(string urlPrefix, bool enableHttpLogging); + void Start(IEnumerable urlPrefixes, bool enableHttpLogging); /// /// Starts the web socket server. diff --git a/MediaBrowser.Controller/IServerApplicationHost.cs b/MediaBrowser.Controller/IServerApplicationHost.cs index f3312d2cb8..5554ced376 100644 --- a/MediaBrowser.Controller/IServerApplicationHost.cs +++ b/MediaBrowser.Controller/IServerApplicationHost.cs @@ -20,12 +20,6 @@ namespace MediaBrowser.Controller /// The name of the web application. string WebApplicationName { get; } - /// - /// Gets the HTTP server URL prefix. - /// - /// The HTTP server URL prefix. - string HttpServerUrlPrefix { get; } - /// /// Gets a value indicating whether [supports automatic run at startup]. /// diff --git a/MediaBrowser.Controller/Net/IHttpServer.cs b/MediaBrowser.Controller/Net/IHttpServer.cs index ba2cd0cccb..20f07c74de 100644 --- a/MediaBrowser.Controller/Net/IHttpServer.cs +++ b/MediaBrowser.Controller/Net/IHttpServer.cs @@ -13,13 +13,13 @@ namespace MediaBrowser.Controller.Net /// Gets the URL prefix. /// /// The URL prefix. - string UrlPrefix { get; } + IEnumerable UrlPrefixes { get; } /// /// Starts the specified server name. /// - /// The URL. - void StartServer(string urlPrefix); + /// The URL prefixes. + void StartServer(IEnumerable urlPrefixes); /// /// Gets a value indicating whether [supports web sockets]. diff --git a/MediaBrowser.Model/Logging/ILogManager.cs b/MediaBrowser.Model/Logging/ILogManager.cs index fabca4459b..674d8fd165 100644 --- a/MediaBrowser.Model/Logging/ILogManager.cs +++ b/MediaBrowser.Model/Logging/ILogManager.cs @@ -40,5 +40,15 @@ namespace MediaBrowser.Model.Logging /// Flushes this instance. /// void Flush(); + + /// + /// Adds the console output. + /// + void AddConsoleOutput(); + + /// + /// Removes the console output. + /// + void RemoveConsoleOutput(); } } diff --git a/MediaBrowser.Mono.userprefs b/MediaBrowser.Mono.userprefs index 3017cf9690..da74b9ccd0 100644 --- a/MediaBrowser.Mono.userprefs +++ b/MediaBrowser.Mono.userprefs @@ -1,10 +1,11 @@  - + + diff --git a/MediaBrowser.Providers/ImagesByName/ImageUtils.cs b/MediaBrowser.Providers/ImagesByName/ImageUtils.cs index 4301c74323..72df3697a4 100644 --- a/MediaBrowser.Providers/ImagesByName/ImageUtils.cs +++ b/MediaBrowser.Providers/ImagesByName/ImageUtils.cs @@ -64,7 +64,8 @@ namespace MediaBrowser.Providers.ImagesByName .Replace(".", string.Empty) .Replace("&", string.Empty) .Replace("!", string.Empty) - .Replace(",", string.Empty); + .Replace(",", string.Empty) + .Replace("/", string.Empty); } public static IEnumerable GetAvailableImages(string file) diff --git a/MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs b/MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs index 34d705bfb7..e9a94c3ad6 100644 --- a/MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs +++ b/MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs @@ -32,7 +32,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer private string DefaultRedirectPath { get; set; } private readonly ILogger _logger; - public string UrlPrefix { get; private set; } + public IEnumerable UrlPrefixes { get; private set; } private readonly List _restServices = new List(); @@ -66,7 +66,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer _containerAdapter = new ContainerAdapter(applicationHost); - for (var i = 0; i < 2; i++) + for (var i = 0; i < 1; i++) { _autoResetEvents.Add(new AutoResetEvent(false)); } @@ -145,20 +145,14 @@ namespace MediaBrowser.Server.Implementations.HttpServer public override ServiceStackHost Start(string listeningAtUrlBase) { - StartListener(listeningAtUrlBase); + StartListener(); return this; } /// /// Starts the Web Service /// - /// - /// A Uri that acts as the base that the server is listening on. - /// Format should be: http://127.0.0.1:8080/ or http://127.0.0.1:8080/somevirtual/ - /// Note: the trailing slash is required! For more info see the - /// HttpListener.Prefixes property on MSDN. - /// - protected void StartListener(string listeningAtUrlBase) + private void StartListener() { // *** Already running - just leave it in place if (IsStarted) @@ -167,14 +161,13 @@ namespace MediaBrowser.Server.Implementations.HttpServer if (Listener == null) Listener = new HttpListener(); - HostContext.Config.HandlerFactoryPath = ListenerRequest.GetHandlerPathIfAny(listeningAtUrlBase); + HostContext.Config.HandlerFactoryPath = ListenerRequest.GetHandlerPathIfAny(UrlPrefixes.First()); - UrlPrefix = listeningAtUrlBase; - - Listener.Prefixes.Add(listeningAtUrlBase); - - _logger.Info("Adding HttpListener Prefixes"); - Listener.Prefixes.Add(listeningAtUrlBase); + foreach (var prefix in UrlPrefixes) + { + _logger.Info("Adding HttpListener prefix " + prefix); + Listener.Prefixes.Add(prefix); + } IsStarted = true; _logger.Info("Starting HttpListner"); @@ -419,7 +412,10 @@ namespace MediaBrowser.Server.Implementations.HttpServer { if (Listener != null) { - Listener.Prefixes.Remove(UrlPrefix); + foreach (var prefix in UrlPrefixes) + { + Listener.Prefixes.Remove(prefix); + } Listener.Close(); } @@ -516,9 +512,10 @@ namespace MediaBrowser.Server.Implementations.HttpServer GC.SuppressFinalize(this); } - public void StartServer(string urlPrefix) + public void StartServer(IEnumerable urlPrefixes) { - Start(urlPrefix); + UrlPrefixes = urlPrefixes.ToList(); + Start(UrlPrefixes.First()); } public bool SupportsWebSockets diff --git a/MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs b/MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs index a2dfb51d2f..6713122742 100644 --- a/MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs +++ b/MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs @@ -124,9 +124,9 @@ namespace MediaBrowser.Server.Implementations.ServerManager /// /// Starts this instance. /// - public void Start(string urlPrefix, bool enableHttpLogging) + public void Start(IEnumerable urlPrefixes, bool enableHttpLogging) { - ReloadHttpServer(urlPrefix, enableHttpLogging); + ReloadHttpServer(urlPrefixes, enableHttpLogging); } public void StartWebSocketServer() @@ -153,14 +153,8 @@ namespace MediaBrowser.Server.Implementations.ServerManager /// /// Restarts the Http Server, or starts it if not currently running /// - private void ReloadHttpServer(string urlPrefix, bool enableHttpLogging) + private void ReloadHttpServer(IEnumerable urlPrefixes, bool enableHttpLogging) { - // Only reload if the port has changed, so that we don't disconnect any active users - if (HttpServer != null && HttpServer.UrlPrefix.Equals(urlPrefix, StringComparison.OrdinalIgnoreCase)) - { - return; - } - DisposeHttpServer(); _logger.Info("Loading Http Server"); @@ -169,7 +163,7 @@ namespace MediaBrowser.Server.Implementations.ServerManager { HttpServer = _applicationHost.Resolve(); HttpServer.EnableHttpRequestLogging = enableHttpLogging; - HttpServer.StartServer(urlPrefix); + HttpServer.StartServer(urlPrefixes); } catch (SocketException ex) { diff --git a/MediaBrowser.Server.Mono/Program.cs b/MediaBrowser.Server.Mono/Program.cs index 59fc11c07c..c657117048 100644 --- a/MediaBrowser.Server.Mono/Program.cs +++ b/MediaBrowser.Server.Mono/Program.cs @@ -33,6 +33,7 @@ namespace MediaBrowser.Server.Mono var logManager = new NlogManager(appPaths.LogDirectoryPath, "server"); logManager.ReloadLogger(LogSeverity.Info); + logManager.AddConsoleOutput(); var logger = _logger = logManager.GetLogger("Main"); diff --git a/MediaBrowser.ServerApplication/ApplicationHost.cs b/MediaBrowser.ServerApplication/ApplicationHost.cs index 13328d622b..bf20c8fb87 100644 --- a/MediaBrowser.ServerApplication/ApplicationHost.cs +++ b/MediaBrowser.ServerApplication/ApplicationHost.cs @@ -94,11 +94,16 @@ namespace MediaBrowser.ServerApplication /// Gets the HTTP server URL prefix. /// /// The HTTP server URL prefix. - public string HttpServerUrlPrefix + private IEnumerable HttpServerUrlPrefixes { get { - return "http://+:" + ServerConfigurationManager.Configuration.HttpServerPortNumber + "/" + WebApplicationName + "/"; + var list = new List + { + "http://+:" + ServerConfigurationManager.Configuration.HttpServerPortNumber + "/" + WebApplicationName + "/" + }; + + return list; } } @@ -212,6 +217,8 @@ namespace MediaBrowser.ServerApplication Logger.ErrorException("Error in {0}", ex, entryPoint.GetType().Name); } }); + + LogManager.RemoveConsoleOutput(); } /// @@ -462,7 +469,7 @@ namespace MediaBrowser.ServerApplication { try { - ServerManager.Start(HttpServerUrlPrefix, ServerConfigurationManager.Configuration.EnableHttpLevelLogging); + ServerManager.Start(HttpServerUrlPrefixes, ServerConfigurationManager.Configuration.EnableHttpLevelLogging); } catch (Exception ex) { @@ -494,7 +501,7 @@ namespace MediaBrowser.ServerApplication HttpServer.EnableHttpRequestLogging = ServerConfigurationManager.Configuration.EnableHttpLevelLogging; - if (!string.Equals(HttpServer.UrlPrefix, HttpServerUrlPrefix, StringComparison.OrdinalIgnoreCase)) + if (!HttpServer.UrlPrefixes.SequenceEqual(HttpServerUrlPrefixes, StringComparer.OrdinalIgnoreCase)) { NotifyPendingRestart(); } @@ -695,8 +702,10 @@ namespace MediaBrowser.ServerApplication try { - ServerAuthorization.AuthorizeServer(ServerConfigurationManager.Configuration.HttpServerPortNumber, - HttpServerUrlPrefix, ServerConfigurationManager.Configuration.LegacyWebSocketPortNumber, + ServerAuthorization.AuthorizeServer( + ServerConfigurationManager.Configuration.HttpServerPortNumber, + HttpServerUrlPrefixes.First(), + ServerConfigurationManager.Configuration.LegacyWebSocketPortNumber, UdpServerEntryPoint.PortNumber, ConfigurationManager.CommonApplicationPaths.TempDirectory); } diff --git a/MediaBrowser.ServerApplication/MainStartup.cs b/MediaBrowser.ServerApplication/MainStartup.cs index 7da17bc225..3021363213 100644 --- a/MediaBrowser.ServerApplication/MainStartup.cs +++ b/MediaBrowser.ServerApplication/MainStartup.cs @@ -42,6 +42,7 @@ namespace MediaBrowser.ServerApplication var logManager = new NlogManager(appPaths.LogDirectoryPath, "server"); logManager.ReloadLogger(LogSeverity.Debug); + logManager.AddConsoleOutput(); var logger = _logger = logManager.GetLogger("Main");