Prechádzať zdrojové kódy

add console logging during startup

Luke Pulverenti 11 rokov pred
rodič
commit
247a40fa61

+ 22 - 1
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");
+        }
     }
 }

+ 2 - 2
MediaBrowser.Common/Net/IServerManager.cs

@@ -25,9 +25,9 @@ namespace MediaBrowser.Common.Net
         /// <summary>
         /// Starts this instance.
         /// </summary>
-        /// <param name="urlPrefix">The URL prefix.</param>
+        /// <param name="urlPrefixes">The URL prefixes.</param>
         /// <param name="enableHttpLogging">if set to <c>true</c> [enable HTTP logging].</param>
-        void Start(string urlPrefix, bool enableHttpLogging);
+        void Start(IEnumerable<string> urlPrefixes, bool enableHttpLogging);
 
         /// <summary>
         /// Starts the web socket server.

+ 0 - 6
MediaBrowser.Controller/IServerApplicationHost.cs

@@ -20,12 +20,6 @@ namespace MediaBrowser.Controller
         /// <value>The name of the web application.</value>
         string WebApplicationName { get; }
 
-        /// <summary>
-        /// Gets the HTTP server URL prefix.
-        /// </summary>
-        /// <value>The HTTP server URL prefix.</value>
-        string HttpServerUrlPrefix { get; }
-
         /// <summary>
         /// Gets a value indicating whether [supports automatic run at startup].
         /// </summary>

+ 3 - 3
MediaBrowser.Controller/Net/IHttpServer.cs

@@ -13,13 +13,13 @@ namespace MediaBrowser.Controller.Net
         /// Gets the URL prefix.
         /// </summary>
         /// <value>The URL prefix.</value>
-        string UrlPrefix { get; }
+        IEnumerable<string> UrlPrefixes { get; }
 
         /// <summary>
         /// Starts the specified server name.
         /// </summary>
-        /// <param name="urlPrefix">The URL.</param>
-        void StartServer(string urlPrefix);
+        /// <param name="urlPrefixes">The URL prefixes.</param>
+        void StartServer(IEnumerable<string> urlPrefixes);
 
         /// <summary>
         /// Gets a value indicating whether [supports web sockets].

+ 10 - 0
MediaBrowser.Model/Logging/ILogManager.cs

@@ -40,5 +40,15 @@ namespace MediaBrowser.Model.Logging
         /// Flushes this instance.
         /// </summary>
         void Flush();
+
+        /// <summary>
+        /// Adds the console output.
+        /// </summary>
+        void AddConsoleOutput();
+
+        /// <summary>
+        /// Removes the console output.
+        /// </summary>
+        void RemoveConsoleOutput();
     }
 }

+ 2 - 1
MediaBrowser.Mono.userprefs

@@ -1,10 +1,11 @@
 <Properties>
   <MonoDevelop.Ide.Workspace ActiveConfiguration="Release Mono" />
-  <MonoDevelop.Ide.Workbench ActiveDocument="MediaBrowser.Server.Mono\Native\NativeApp.cs">
+  <MonoDevelop.Ide.Workbench ActiveDocument="MediaBrowser.Server.Mono\Program.cs">
     <Files>
       <File FileName="MediaBrowser.Server.Mono\app.config" Line="1" Column="1" />
       <File FileName="MediaBrowser.ServerApplication\ApplicationHost.cs" Line="1" Column="1" />
       <File FileName="MediaBrowser.Server.Mono\Native\NativeApp.cs" Line="12" Column="23" />
+      <File FileName="MediaBrowser.Server.Mono\Program.cs" Line="36" Column="34" />
     </Files>
   </MonoDevelop.Ide.Workbench>
   <MonoDevelop.Ide.DebuggingService.Breakpoints>

+ 2 - 1
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<string> GetAvailableImages(string file)

+ 17 - 20
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<string> UrlPrefixes { get; private set; }
 
         private readonly List<IRestfulService> _restServices = new List<IRestfulService>();
 
@@ -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;
         }
 
         /// <summary>
         /// Starts the Web Service
         /// </summary>
-        /// <param name="listeningAtUrlBase">
-        /// 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.
-        /// </param>
-        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<string> urlPrefixes)
         {
-            Start(urlPrefix);
+            UrlPrefixes = urlPrefixes.ToList();
+            Start(UrlPrefixes.First());
         }
 
         public bool SupportsWebSockets

+ 4 - 10
MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs

@@ -124,9 +124,9 @@ namespace MediaBrowser.Server.Implementations.ServerManager
         /// <summary>
         /// Starts this instance.
         /// </summary>
-        public void Start(string urlPrefix, bool enableHttpLogging)
+        public void Start(IEnumerable<string> urlPrefixes, bool enableHttpLogging)
         {
-            ReloadHttpServer(urlPrefix, enableHttpLogging);
+            ReloadHttpServer(urlPrefixes, enableHttpLogging);
         }
 
         public void StartWebSocketServer()
@@ -153,14 +153,8 @@ namespace MediaBrowser.Server.Implementations.ServerManager
         /// <summary>
         /// Restarts the Http Server, or starts it if not currently running
         /// </summary>
-        private void ReloadHttpServer(string urlPrefix, bool enableHttpLogging)
+        private void ReloadHttpServer(IEnumerable<string> 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<IHttpServer>();
                 HttpServer.EnableHttpRequestLogging = enableHttpLogging;
-                HttpServer.StartServer(urlPrefix);
+                HttpServer.StartServer(urlPrefixes);
             }
             catch (SocketException ex)
             {

+ 1 - 0
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");
 

+ 15 - 6
MediaBrowser.ServerApplication/ApplicationHost.cs

@@ -94,11 +94,16 @@ namespace MediaBrowser.ServerApplication
         /// Gets the HTTP server URL prefix.
         /// </summary>
         /// <value>The HTTP server URL prefix.</value>
-        public string HttpServerUrlPrefix
+        private IEnumerable<string> HttpServerUrlPrefixes
         {
             get
             {
-                return "http://+:" + ServerConfigurationManager.Configuration.HttpServerPortNumber + "/" + WebApplicationName + "/";
+                var list = new List<string>
+                {
+                    "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();
         }
 
         /// <summary>
@@ -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);
             }

+ 1 - 0
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");