diff options
-rw-r--r-- | OpenSim/Framework/Console/ConsoleBase.cs | 7 | ||||
-rw-r--r-- | OpenSim/Framework/Console/LocalConsole.cs | 86 | ||||
-rw-r--r-- | OpenSim/Framework/Console/OpenSimAppender.cs | 82 | ||||
-rw-r--r-- | OpenSim/Framework/Console/RemoteConsole.cs | 3 |
4 files changed, 101 insertions, 77 deletions
diff --git a/OpenSim/Framework/Console/ConsoleBase.cs b/OpenSim/Framework/Console/ConsoleBase.cs index 0747ae5..6e00888 100644 --- a/OpenSim/Framework/Console/ConsoleBase.cs +++ b/OpenSim/Framework/Console/ConsoleBase.cs | |||
@@ -66,9 +66,14 @@ namespace OpenSim.Framework.Console | |||
66 | { | 66 | { |
67 | } | 67 | } |
68 | 68 | ||
69 | public virtual void Output(string text, string level) | ||
70 | { | ||
71 | Output(text); | ||
72 | } | ||
73 | |||
69 | public virtual void Output(string text) | 74 | public virtual void Output(string text) |
70 | { | 75 | { |
71 | System.Console.WriteLine(text); | 76 | System.Console.Write(text); |
72 | } | 77 | } |
73 | 78 | ||
74 | public string CmdPrompt(string p) | 79 | public string CmdPrompt(string p) |
diff --git a/OpenSim/Framework/Console/LocalConsole.cs b/OpenSim/Framework/Console/LocalConsole.cs index ca57bd6..4d768b9 100644 --- a/OpenSim/Framework/Console/LocalConsole.cs +++ b/OpenSim/Framework/Console/LocalConsole.cs | |||
@@ -30,6 +30,7 @@ using System.Collections.Generic; | |||
30 | using System.Diagnostics; | 30 | using System.Diagnostics; |
31 | using System.Reflection; | 31 | using System.Reflection; |
32 | using System.Text; | 32 | using System.Text; |
33 | using System.Text.RegularExpressions; | ||
33 | using System.Threading; | 34 | using System.Threading; |
34 | using log4net; | 35 | using log4net; |
35 | 36 | ||
@@ -50,6 +51,28 @@ namespace OpenSim.Framework.Console | |||
50 | private bool echo = true; | 51 | private bool echo = true; |
51 | private List<string> history = new List<string>(); | 52 | private List<string> history = new List<string>(); |
52 | 53 | ||
54 | private static readonly ConsoleColor[] Colors = { | ||
55 | // the dark colors don't seem to be visible on some black background terminals like putty :( | ||
56 | //ConsoleColor.DarkBlue, | ||
57 | //ConsoleColor.DarkGreen, | ||
58 | //ConsoleColor.DarkCyan, | ||
59 | //ConsoleColor.DarkMagenta, | ||
60 | //ConsoleColor.DarkYellow, | ||
61 | ConsoleColor.Gray, | ||
62 | //ConsoleColor.DarkGray, | ||
63 | ConsoleColor.Blue, | ||
64 | ConsoleColor.Green, | ||
65 | ConsoleColor.Cyan, | ||
66 | ConsoleColor.Magenta, | ||
67 | ConsoleColor.Yellow | ||
68 | }; | ||
69 | |||
70 | private static ConsoleColor DeriveColor(string input) | ||
71 | { | ||
72 | // it is important to do Abs, hash values can be negative | ||
73 | return Colors[(Math.Abs(input.ToUpper().GetHashCode()) % Colors.Length)]; | ||
74 | } | ||
75 | |||
53 | public LocalConsole(string defaultPrompt) : base(defaultPrompt) | 76 | public LocalConsole(string defaultPrompt) : base(defaultPrompt) |
54 | { | 77 | { |
55 | } | 78 | } |
@@ -158,13 +181,72 @@ namespace OpenSim.Framework.Console | |||
158 | Monitor.Exit(cmdline); | 181 | Monitor.Exit(cmdline); |
159 | } | 182 | } |
160 | 183 | ||
184 | private void WriteColorText(ConsoleColor color, string sender) | ||
185 | { | ||
186 | try | ||
187 | { | ||
188 | lock (this) | ||
189 | { | ||
190 | try | ||
191 | { | ||
192 | System.Console.ForegroundColor = color; | ||
193 | System.Console.Write(sender); | ||
194 | System.Console.ResetColor(); | ||
195 | } | ||
196 | catch (ArgumentNullException) | ||
197 | { | ||
198 | // Some older systems dont support coloured text. | ||
199 | System.Console.WriteLine(sender); | ||
200 | } | ||
201 | } | ||
202 | } | ||
203 | catch (ObjectDisposedException) | ||
204 | { | ||
205 | } | ||
206 | } | ||
207 | |||
208 | private void WriteLocalText(string text, string level) | ||
209 | { | ||
210 | string regex = @"^(?<Front>.*?)\[(?<Category>[^\]]+)\]:?(?<End>.*)"; | ||
211 | |||
212 | Regex RE = new Regex(regex, RegexOptions.Multiline); | ||
213 | MatchCollection matches = RE.Matches(text); | ||
214 | |||
215 | string outText = text; | ||
216 | ConsoleColor color = ConsoleColor.White; | ||
217 | |||
218 | if (matches.Count == 1) | ||
219 | { | ||
220 | outText = matches[0].Groups["End"].Value; | ||
221 | System.Console.Write(matches[0].Groups["Front"].Value); | ||
222 | |||
223 | System.Console.Write("["); | ||
224 | WriteColorText(DeriveColor(matches[0].Groups["Category"].Value), | ||
225 | matches[0].Groups["Category"].Value); | ||
226 | System.Console.Write("]:"); | ||
227 | } | ||
228 | |||
229 | if (level == "error") | ||
230 | color = ConsoleColor.Red; | ||
231 | else if (level == "warn") | ||
232 | color = ConsoleColor.Yellow; | ||
233 | |||
234 | WriteColorText(color, outText); | ||
235 | System.Console.WriteLine(); | ||
236 | } | ||
237 | |||
161 | public override void Output(string text) | 238 | public override void Output(string text) |
162 | { | 239 | { |
240 | Output(text, "normal"); | ||
241 | } | ||
242 | |||
243 | public override void Output(string text, string level) | ||
244 | { | ||
163 | lock (cmdline) | 245 | lock (cmdline) |
164 | { | 246 | { |
165 | if (y == -1) | 247 | if (y == -1) |
166 | { | 248 | { |
167 | System.Console.WriteLine(text); | 249 | WriteLocalText(text, level); |
168 | 250 | ||
169 | return; | 251 | return; |
170 | } | 252 | } |
@@ -180,7 +262,7 @@ namespace OpenSim.Framework.Console | |||
180 | y = SetCursorTop(y); | 262 | y = SetCursorTop(y); |
181 | System.Console.CursorLeft = 0; | 263 | System.Console.CursorLeft = 0; |
182 | 264 | ||
183 | System.Console.WriteLine(text); | 265 | WriteLocalText(text, level); |
184 | 266 | ||
185 | y = System.Console.CursorTop; | 267 | y = System.Console.CursorTop; |
186 | 268 | ||
diff --git a/OpenSim/Framework/Console/OpenSimAppender.cs b/OpenSim/Framework/Console/OpenSimAppender.cs index 6193bac..400bd83 100644 --- a/OpenSim/Framework/Console/OpenSimAppender.cs +++ b/OpenSim/Framework/Console/OpenSimAppender.cs | |||
@@ -26,7 +26,6 @@ | |||
26 | */ | 26 | */ |
27 | 27 | ||
28 | using System; | 28 | using System; |
29 | using System.Text.RegularExpressions; | ||
30 | using log4net.Appender; | 29 | using log4net.Appender; |
31 | using log4net.Core; | 30 | using log4net.Core; |
32 | 31 | ||
@@ -45,62 +44,29 @@ namespace OpenSim.Framework.Console | |||
45 | set { m_console = value; } | 44 | set { m_console = value; } |
46 | } | 45 | } |
47 | 46 | ||
48 | private static readonly ConsoleColor[] Colors = { | ||
49 | // the dark colors don't seem to be visible on some black background terminals like putty :( | ||
50 | //ConsoleColor.DarkBlue, | ||
51 | //ConsoleColor.DarkGreen, | ||
52 | //ConsoleColor.DarkCyan, | ||
53 | //ConsoleColor.DarkMagenta, | ||
54 | //ConsoleColor.DarkYellow, | ||
55 | ConsoleColor.Gray, | ||
56 | //ConsoleColor.DarkGray, | ||
57 | ConsoleColor.Blue, | ||
58 | ConsoleColor.Green, | ||
59 | ConsoleColor.Cyan, | ||
60 | ConsoleColor.Magenta, | ||
61 | ConsoleColor.Yellow | ||
62 | }; | ||
63 | |||
64 | override protected void Append(LoggingEvent le) | 47 | override protected void Append(LoggingEvent le) |
65 | { | 48 | { |
66 | if (m_console != null) | 49 | if (m_console != null) |
67 | m_console.LockOutput(); | 50 | m_console.LockOutput(); |
68 | 51 | ||
52 | string loggingMessage = RenderLoggingEvent(le); | ||
53 | |||
69 | try | 54 | try |
70 | { | 55 | { |
71 | string loggingMessage = RenderLoggingEvent(le); | 56 | if (m_console != null) |
72 | |||
73 | string regex = @"^(?<Front>.*?)\[(?<Category>[^\]]+)\]:?(?<End>.*)"; | ||
74 | |||
75 | Regex RE = new Regex(regex, RegexOptions.Multiline); | ||
76 | MatchCollection matches = RE.Matches(loggingMessage); | ||
77 | |||
78 | // Get some direct matches $1 $4 is a | ||
79 | if (matches.Count == 1) | ||
80 | { | 57 | { |
81 | System.Console.Write(matches[0].Groups["Front"].Value); | 58 | string level = "normal"; |
82 | System.Console.Write("["); | ||
83 | |||
84 | WriteColorText(DeriveColor(matches[0].Groups["Category"].Value), matches[0].Groups["Category"].Value); | ||
85 | System.Console.Write("]:"); | ||
86 | 59 | ||
87 | if (le.Level == Level.Error) | 60 | if (le.Level == Level.Error) |
88 | { | 61 | level = "error"; |
89 | WriteColorText(ConsoleColor.Red, matches[0].Groups["End"].Value); | ||
90 | } | ||
91 | else if (le.Level == Level.Warn) | 62 | else if (le.Level == Level.Warn) |
92 | { | 63 | level = "warn"; |
93 | WriteColorText(ConsoleColor.Yellow, matches[0].Groups["End"].Value); | 64 | |
94 | } | 65 | m_console.Output(loggingMessage, level); |
95 | else | ||
96 | { | ||
97 | System.Console.Write(matches[0].Groups["End"].Value); | ||
98 | } | ||
99 | System.Console.WriteLine(); | ||
100 | } | 66 | } |
101 | else | 67 | else |
102 | { | 68 | { |
103 | System.Console.Write(loggingMessage); | 69 | System.Console.WriteLine(loggingMessage); |
104 | } | 70 | } |
105 | } | 71 | } |
106 | catch (Exception e) | 72 | catch (Exception e) |
@@ -113,35 +79,5 @@ namespace OpenSim.Framework.Console | |||
113 | m_console.UnlockOutput(); | 79 | m_console.UnlockOutput(); |
114 | } | 80 | } |
115 | } | 81 | } |
116 | |||
117 | private void WriteColorText(ConsoleColor color, string sender) | ||
118 | { | ||
119 | try | ||
120 | { | ||
121 | lock (this) | ||
122 | { | ||
123 | try | ||
124 | { | ||
125 | System.Console.ForegroundColor = color; | ||
126 | System.Console.Write(sender); | ||
127 | System.Console.ResetColor(); | ||
128 | } | ||
129 | catch (ArgumentNullException) | ||
130 | { | ||
131 | // Some older systems dont support coloured text. | ||
132 | System.Console.WriteLine(sender); | ||
133 | } | ||
134 | } | ||
135 | } | ||
136 | catch (ObjectDisposedException) | ||
137 | { | ||
138 | } | ||
139 | } | ||
140 | |||
141 | private static ConsoleColor DeriveColor(string input) | ||
142 | { | ||
143 | // it is important to do Abs, hash values can be negative | ||
144 | return Colors[(Math.Abs(input.ToUpper().GetHashCode()) % Colors.Length)]; | ||
145 | } | ||
146 | } | 82 | } |
147 | } | 83 | } |
diff --git a/OpenSim/Framework/Console/RemoteConsole.cs b/OpenSim/Framework/Console/RemoteConsole.cs index ea46afd..fdbf1f4 100644 --- a/OpenSim/Framework/Console/RemoteConsole.cs +++ b/OpenSim/Framework/Console/RemoteConsole.cs | |||
@@ -60,8 +60,9 @@ namespace OpenSim.Framework.Console | |||
60 | m_Server = server; | 60 | m_Server = server; |
61 | } | 61 | } |
62 | 62 | ||
63 | public override void Output(string text) | 63 | public override void Output(string text, string level) |
64 | { | 64 | { |
65 | System.Console.Write(text); | ||
65 | } | 66 | } |
66 | 67 | ||
67 | public override string ReadLine(string p, bool isCommand, bool e) | 68 | public override string ReadLine(string p, bool isCommand, bool e) |