17 using System.Collections.Generic;
20 using System.Windows.Forms;
22 namespace ErrorManagement {
40 private string logFileName;
45 private bool showInConsole;
50 private bool errorFound;
55 private bool showMessages;
60 private IList<IError> errorList =
new List<IError>();
70 get {
return instance; }
78 get {
return showInConsole; }
79 set { showInConsole = value; }
87 get {
return this.errorFound; }
94 get {
return this.showMessages; }
95 set { this.showMessages = value; }
102 get {
return logFileName; }
103 set { logFileName = value; }
110 get {
return this.errorList.Count; }
120 this.logFileName = Application.StartupPath +
@"\error.log";
121 this.errorFound =
false;
122 this.showMessages =
true;
128 static ErrorManager() {
133 #region writeErrorLogHeader()
139 private static void writeErrorLogHeader(TextWriter tw) {
142 tw.WriteLine(
"-------------------------------------------------------------------------------------------");
145 tw.WriteLine(System.DateTime.Now.ToLongDateString());
147 tw.WriteLine(System.DateTime.Now.ToLongTimeString());
150 }
catch (IOException e) {
151 Console.Error.WriteLine(
"[ErrorManager]: It hasn't been possible to write in error log.");
152 Console.Error.WriteLine(e.Message);
153 Environment.Exit(-1);
160 private void writeError(
string s, TextWriter tw) {
165 if (!this.showMessages)
169 Console.Error.Write(s);
173 #region writeErrorLogEntry()
180 private void writeErrorLogEntry(TextWriter tw, IError error) {
181 if (!this.showMessages)
184 ErrorAdapter errorAdapter = error as ErrorAdapter;
185 if (errorAdapter != null) {
186 writeError(errorAdapter.Location.ToString(), tw);
187 writeError(
": Error " + errorAdapter.GetType().FullName +
" (" + errorAdapter.ErrorType+
"). ", tw);
188 writeError(errorAdapter.Description +
"\n", tw);
191 writeError(
"Error: ", tw);
192 writeError(error.ErrorType +
"\r\n", tw);
193 writeError(
"Description: ", tw);
194 writeError(error.Description +
"\r\n", tw);
197 }
catch (IOException e) {
198 Console.Error.WriteLine(
"[ErrorManager]: It has not been possible to write in error log.");
199 Console.Error.WriteLine(e.Message);
200 Environment.Exit(-1);
206 #region NotifyError()
213 if (!this.showMessages)
217 if (this.errorList.Contains(error))
219 this.errorList.Add(error);
224 StreamWriter writer =
new StreamWriter(this.logFileName,
true);
231 writeErrorLogHeader(writer);
233 writeErrorLogEntry(writer, error);
236 }
catch (Exception e) {
237 Console.Error.WriteLine(
"[ErrorManager]: It has not been possible to write in error log.");
238 Console.Error.WriteLine(e.Message);
239 Environment.Exit(-1);
252 return this.errorList[errorNumber];
257 public void Clear() {
267 }
catch (IOException ex) {
268 System.Diagnostics.Trace.WriteLine(ex);
Class to allow the management of all different error types happened.
void NotifyError(IError error)
Notify the error
bool ShowInConsole
To show the error mesagges in console
System.IO.FileInfo FileInfo
Interfaz for the different error types.
bool ErrorFound
Returns TRUE if an error occurred, FALSE otherwise.
static ErrorManager Instance
Gets the unique instance of ErrorManager
string LogFileName
Filename of the log file.
IError GetError(int errorNumber)
Returns an error object
void Clear()
Clears error list, sets errorFound to false, and deletes log file.
int ErrorCount
Returns the number of errors
bool ShowMessages
True if messages are shown when the method notify error is called.