瀏覽代碼

try to fix console AGAIN

UbitUmarov 4 年之前
父節點
當前提交
7939974d92

+ 55 - 4
OpenSim/Framework/Console/ConsoleBase.cs

@@ -35,6 +35,32 @@ using log4net;
 
 namespace OpenSim.Framework.Console
 {
+    public class ConsoleLevel
+    {
+        public string m_string;
+
+        ConsoleLevel(string v)
+        {
+            m_string = v;
+        }
+
+        static public implicit operator ConsoleLevel(string s)
+        {
+            return new ConsoleLevel(s);
+        }
+
+        public static string ToString(ConsoleLevel s)
+        {
+            return s.m_string;
+        }
+
+        public override string ToString()
+        {
+            return m_string;
+        }
+    }
+
+
     public class ConsoleBase : IConsole
     {
 //        private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
@@ -58,14 +84,39 @@ namespace OpenSim.Framework.Console
         {
         }
 
-        public void Output(string format, params object[] components)
+        public void Output(string format)
         {
-            Output(format, null, components);
+            System.Console.WriteLine(format);
         }
 
-        public virtual void Output(string format, string level, params object[] components)
+        public virtual void Output(string format, params object[] components)
         {
-            System.Console.WriteLine(format, components);
+            string level = null;
+            if (components != null && components.Length > 0)
+            {
+                if (components[0] == null || components[0] is ConsoleLevel)
+                {
+                    if (components[0] is ConsoleLevel)
+                        level = ((ConsoleLevel)components[0]).ToString();
+
+                    if (components.Length > 1)
+                    {
+                        object[] tmp = new object[components.Length - 1];
+                        Array.Copy(components, 1, tmp, 0, components.Length - 1);
+                        components = tmp;
+                    }
+                    else
+                        components = null;
+                }
+
+            }
+            string text;
+            if (components == null || components.Length == 0)
+                text = format;
+            else
+                text = String.Format(format, components);
+
+            System.Console.WriteLine(text);
         }
 
         public string Prompt(string p)

+ 25 - 2
OpenSim/Framework/Console/LocalConsole.cs

@@ -389,9 +389,32 @@ namespace OpenSim.Framework.Console
             System.Console.WriteLine();
         }
 
-        public override void Output(string format, string level, params object[] components)
+        public override void Output(string format, params object[] components)
         {
-            string text = String.Format(format, components);
+            string level = null;
+            if(components != null && components.Length > 0)
+            {
+                if(components[0] == null || components[0] is ConsoleLevel)
+                {
+                    if(components[0] is ConsoleLevel)
+                        level = ((ConsoleLevel)components[0]).ToString();
+
+                    if (components.Length > 1)
+                    {
+                        object[] tmp = new object[components.Length - 1];
+                        Array.Copy(components, 1, tmp, 0, components.Length - 1);
+                        components = tmp;
+                    }
+                    else
+                        components = null;
+                }
+
+            }
+            string text;
+            if (components == null || components.Length == 0)
+                text = format;
+            else
+                text = String.Format(format, components);
 
             FireOnOutput(text);
 

+ 1 - 1
OpenSim/Framework/Console/MockConsole.cs

@@ -62,8 +62,8 @@ namespace OpenSim.Framework.Console
             set {}
         }
 
+        public void Output(string format) { }
         public void Output(string format, params object[] components) { }
-        public void Output(string format, string level, params object[] components) { }
 
         public string Prompt(string p) { return ""; }
         public string Prompt(string p, string def) { return ""; }

+ 3 - 1
OpenSim/Framework/Console/OpenSimAppender.cs

@@ -55,12 +55,14 @@ namespace OpenSim.Framework.Console
             {
                 if (m_console != null)
                 {
-                    string level = "normal";
+                    ConsoleLevel level;
 
                     if (le.Level == Level.Error)
                         level = "error";
                     else if (le.Level == Level.Warn)
                         level = "warn";
+                    else
+                        level = "normal";
 
                     m_console.Output(loggingMessage, level);
                 }

+ 26 - 4
OpenSim/Framework/Console/RemoteConsole.cs

@@ -190,12 +190,34 @@ namespace OpenSim.Framework.Console
             m_Server.AddHTTPHandler("/SessionCommand/", HandleHttpSessionCommand);
         }
 
-        public override void Output(string format, string level = null, params object[] components)
+        public override void Output(string format, params object[] components)
         {
-            if (components.Length == 0)
-                Output(format, level, false, false, false);
+            string level = null;
+            if (components != null && components.Length > 0)
+            {
+                if (components[0] == null || components[0] is ConsoleLevel)
+                {
+                    if (components[0] is ConsoleLevel)
+                        level = ((ConsoleLevel)components[0]).ToString();
+
+                    if (components.Length > 1)
+                    {
+                        object[] tmp = new object[components.Length - 1];
+                        Array.Copy(components, 1, tmp, 0, components.Length - 1);
+                        components = tmp;
+                    }
+                    else
+                        components = null;
+                }
+            }
+
+            string text;
+            if (components == null || components.Length == 0)
+                text = format;
             else
-                Output(String.Format(format, components), level, false, false, false);
+                text = String.Format(format, components);
+
+            Output(text, level, false, false, false);
         }
 
         protected void Output(string text, string level, bool isPrompt, bool isCommand, bool isInput)

+ 4 - 2
OpenSim/Framework/IConsole.cs

@@ -32,11 +32,13 @@ namespace OpenSim.Framework
 {
     public interface IConsole
     {
+
+
         IScene ConsoleScene { get; set; }
 
+        void Output(string format);
         void Output(string format, params object[] components);
-        void Output(string format, string level, params object[] components);
-
+ 
         string Prompt(string p);
         string Prompt(string p, string def);
         string Prompt(string p, List<char> excludedCharacters);