// clsLog.cs
// Copyright (C) 2008 Karel Jordaan karel_jordaan@yahoo.com.au
// 
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
// 
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
// 
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

using System;

using System.IO;
using System.Diagnostics;
//using System.Reflection;


namespace GUIControlLogic.Error
{
	/// <summary>
	/// clsLog logs errors to file and mail listener.
	/// </summary>
	public class clsLog//:IDisposable	
	{

		#region Variable declaration

        /// <summary>
        /// A reference to a stream writer
        /// </summary>
        /// <remarks>None</remarks>
		private StreamWriter sw; 

        /// <summary>
        /// A reference to a txt trace listner
        /// </summary>
        /// <remarks>None</remarks>
		private TextWriterTraceListener tl; 

        /// <summary>
        /// Constant for the logfilename
        /// </summary>
        /// <remarks>To move to config file and not to hardcode</remarks>
		private const string LOG_FILE ="ZANZIClient_ErrorLog.txt";
	//	private static bool instance_flag= false; 

		#endregion

		#region Functions

        /// <summary>
        /// Constructor for the log class
        /// </summary>
        /// <remarks>None</remarks>
		public clsLog()
		{

			try
			{
				//Logfile
				//Assembly mainAssembly = Assembly.GetExecutingAssembly();

				//strm = File.Open (LOG_FILE,FileMode.OpenOrCreate);
				//strm = File.Open (mainAssembly.GetName()  + ".log",FileMode.OpenOrCreate);

				sw = new StreamWriter(LOG_FILE,true);
				tl = new TextWriterTraceListener(sw);			
				Trace.Listeners.Add (tl);
				sw.AutoFlush = true;
				//strm.AutoFlush = true;

			}
			catch(Exception ex)
			{
				Debug.WriteLine  (ex.Message );
				Debugger.Break();
			}
			

		}
//		#region IDisposable Members
//
//		public void Dispose()
//		{
//			//sw.Close();
//			sw = null;
//			tl = null;
//		}
//
//		#endregion

		#endregion
	}
}
