diff options
author | Melanie Thielker | 2009-05-20 14:40:50 +0000 |
---|---|---|
committer | Melanie Thielker | 2009-05-20 14:40:50 +0000 |
commit | 3ae9bb6d83540ef5acf3cbe4969d0f9c01164d21 (patch) | |
tree | 2f8fe335030dd70795fba2a6334e150c1fab19a4 | |
parent | Remove the pre-log4net, discrete output methods from the consoles (diff) | |
download | opensim-SC-3ae9bb6d83540ef5acf3cbe4969d0f9c01164d21.zip opensim-SC-3ae9bb6d83540ef5acf3cbe4969d0f9c01164d21.tar.gz opensim-SC-3ae9bb6d83540ef5acf3cbe4969d0f9c01164d21.tar.bz2 opensim-SC-3ae9bb6d83540ef5acf3cbe4969d0f9c01164d21.tar.xz |
Move the color console logic from the appender into the local console, since
that is the only one that can use it. Change appender output to always go
through the console output functions.
-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) |