You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by ha...@apache.org on 2004/07/04 05:17:47 UTC

svn commit: rev 22515 - in avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework: . Configuration Context Logger

Author: hammett
Date: Sat Jul  3 20:17:47 2004
New Revision: 22515

Modified:
   avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/Configuration/ConfigurationCollection.cs
   avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/Context/DefaultContext.cs
   avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/IConfigurable.cs
   avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/IInitializable.cs
   avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/ILookupEnabled.cs
   avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/IStartable.cs
   avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/ISuspendable.cs
   avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/Logger/ConsoleLogger.cs
   avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/Logger/DiagnosticsLogger.cs
   avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/Logger/ILogEnabled.cs
   avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/Logger/ILogger.cs
   avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/Logger/NullLogger.cs
Log:
House cleaning

Modified: avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/Configuration/ConfigurationCollection.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/Configuration/ConfigurationCollection.cs	(original)
+++ avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/Configuration/ConfigurationCollection.cs	Sat Jul  3 20:17:47 2004
@@ -60,19 +60,14 @@
 		/// </exception>
 		public IConfiguration this[int index] 
 		{
-
 			get 
 			{
-
 				return (IConfiguration) List[index];
 			}
-
 			set 
 			{
-
 				List[index] = value;
 			}
-
 		}
 
 		/// <summary>
@@ -84,7 +79,6 @@
 		/// </returns>
 		public int Add(IConfiguration value) 
 		{
-
 			return List.Add(value);
 		}
 
@@ -121,7 +115,6 @@
 		/// <param name="index">The zero-based index in array at which copying begins.</param>
 		public void CopyTo(IConfiguration[] array, int index)
 		{
-
 			List.CopyTo(array, index);
 		}
 
@@ -136,7 +129,6 @@
 		/// </returns>
 		public bool Contains(IConfiguration value) 
 		{
-
 			return List.Contains(value);
 		}
 
@@ -151,7 +143,6 @@
 		/// </returns>
 		public int IndexOf(IConfiguration value) 
 		{
-
 			return List.IndexOf(value);
 		}
 
@@ -163,7 +154,6 @@
 		/// <param name="value">The <see cref="IConfiguration"/> to insert.</param>
 		public void Insert(int index, IConfiguration value) 
 		{
-
 			List.Insert(index, value);
 		}
 		
@@ -177,7 +167,6 @@
 		/// </exception>
 		public void Remove(IConfiguration value) 
 		{
-
 			List.Remove(value);
 		}
 	}

Modified: avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/Context/DefaultContext.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/Context/DefaultContext.cs	(original)
+++ avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/Context/DefaultContext.cs	Sat Jul  3 20:17:47 2004
@@ -23,11 +23,6 @@
 	/// </summary>
 	public class DefaultContext : IContext
 	{
-		[Serializable]
-		private sealed class Hidden
-		{
-		}
-
 		private static Hidden HIDDEN_MAKER = new Hidden();
 
 		private IDictionary m_contextData;
@@ -113,6 +108,11 @@
 		}
 
 		#endregion
+
+		[Serializable]
+			private sealed class Hidden
+		{
+		}
 
 		/// <summary>
 		/// Helper method fo adding items to Context.

Modified: avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/IConfigurable.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/IConfigurable.cs	(original)
+++ avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/IConfigurable.cs	Sat Jul  3 20:17:47 2004
@@ -11,6 +11,7 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.

namespace Apache.Avalon.Framework
{
	using System;
+
 	///<summary>
 	/// This interface should be implemented by classes that need to be
	/// configured with custom parameters before initialization. The
	/// contract surrounding a Configurable is that the instantiating
	/// entity must call the configure method before it is valid.
	///</summary>
 	public interface IConfigurable
	{
		/// <summary>
		/// This interface should be implemented by classes that need to be
		/// configured with custom parameters before initialization. The
		/// contract surrounding a Configurable is that the instantiating
		/// entity must call the configure method before it is valid.
		/// </summary>
		/// <param name="config">The configuration object to parse.</param>
		/// <exception cref="ConfigurationException">

Modified: avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/IInitializable.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/IInitializable.cs	(original)
+++ avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/IInitializable.cs	Sat Jul  3 20:17:47 2004
@@ -13,4 +13,5 @@
 // limitations under the License.
 
 namespace Apache.Avalon.Framework
{
	using System;
+
 	/// <summary>
	/// The Initializable interface is used by components that need to allocate
	/// resources prior to them becoming active.
	/// </summary>
	public interface IInitializable
	{
		/// <summary>
		/// Initialize the component. Initialization includes allocating any
		/// resources required throughout the component's lifecycle.
		/// </summary>
		/// <exception cref="Exception">
		/// If the component cannot initialize properly
		/// </exception>
		void Initialize();
	}
}

Modified: avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/ILookupEnabled.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/ILookupEnabled.cs	(original)
+++ avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/ILookupEnabled.cs	Sat Jul  3 20:17:47 2004
@@ -13,4 +13,5 @@
 // limitations under the License.
 
 namespace Apache.Avalon.Framework
{
	using System;
+
 	/// <summary>
	/// A Serviceable is a class that need to connect to software components
	/// or obtain other context information using a name, thus not depending
	/// on particular implementations but on behavioral interfaces. The
	/// contract surrounding a ILookupEnabled is that it is a user. The
	/// ILookupEnabled is able to use Objects managed by the ILookupManager
	/// it was initialized with. As part of the contract with the system, the
	/// instantiating entity (container) must call the enableLookups method
	/// before the ILookupEnabled can be considered valid.
	/// </summary>
	public interface ILookupEnabled
	{
		/// <summary>
		/// Pass the ILookupManager to the ILookupEnabled. The ILookupEnabled
		/// implementation should use the specified ILookupManager to acquire
		/// the components it needs for execution.
		/// </summary>
		/// <param name="manager">The lookup manager</param>
		/// <exception cref="LookupException">If a required object could not be found.</exception>
		void EnableLookups( ILookupManager manager );
	}
}

Modified: avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/IStartable.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/IStartable.cs	(original)
+++ avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/IStartable.cs	Sat Jul  3 20:17:47 2004
@@ -13,4 +13,5 @@
 // limitations under the License.
 
 namespace Apache.Avalon.Framework
{
	using System;
+
 	/// <summary>
	/// The Startable interface is used when components need to be "running" to
	/// be active. It provides a method through which components can be
	/// "started" and "stopped" without requiring a thread. Note that these
	/// methods should start the component but return imediately.
	/// </summary>
	public interface IStartable
	{
		/// <summary>
		/// Starts the component.
		/// </summary>
		/// <exception cref="Exception">
		/// If there is a problem starting the component.
		/// </exception>
		void Start();

		/// <summary>
		/// Stops the component.
		/// </summary>
		/// <exception cref="Exception">
		/// If there is a problem stoping the component.
		/// </exception>
		void Stop();
	}
}

Modified: avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/ISuspendable.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/ISuspendable.cs	(original)
+++ avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/ISuspendable.cs	Sat Jul  3 20:17:47 2004
@@ -12,4 +12,4 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-using System;

namespace Apache.Avalon.Framework
{
	/// <summary>
	/// The Suspendable interface is used when a component will need to
	/// temporarily halt execution of a component. The execution may be halted
	/// so that you can take snapshot metrics of the component.
	/// </summary>
	public interface ISuspendable
	{
		/// <summary>
		///   Suspends the component.
		/// </summary>
		void Suspend();

		/// <summary>
		///   Resumes the component.
		/// </summary>
		void Resume();
	}
}
+namespace Apache.Avalon.Framework
{
	using System;

	/// <summary>
	/// The Suspendable interface is used when a component will need to
	/// temporarily halt execution of a component. The execution may be halted
	/// so that you can take snapshot metrics of the component.
	/// </summary>
	public interface ISuspendable
	{
		/// <summary>
		///   Suspends the component.
		/// </summary>
		void Suspend();

		/// <summary>
		///   Resumes the component.
		/// </summary>
		void Resume();
	}
}

Modified: avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/Logger/ConsoleLogger.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/Logger/ConsoleLogger.cs	(original)
+++ avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/Logger/ConsoleLogger.cs	Sat Jul  3 20:17:47 2004
@@ -11,9 +11,11 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.

namespace Apache.Avalon.Framework
{
	using System;
+
 	/// <summary>
	///	The Logger sending everything to the standard output streams.
	/// This is mainly for the cases when you have a utility that
	/// does not have a logger to supply.
	/// </summary>
	public class ConsoleLogger : ILogger
	{
		/// <summary>
 		/// Default logger level
 		/// </summary>
		private LoggerLevel m_logLevel = LoggerLevel.Debug;

		/// <summary>
 		/// Default name
 		/// </summary>
		private String m_name = String.Empty;

		/// <summary>
		/// Creates a new ConsoleLogger with the priority set to DEBUG.
		/// </summary>
		public ConsoleLogger(): this(LoggerLevel.Debug)
		{
		}

		/// <summary>
		/// Creates a new ConsoleLogger.
		/// </summary>
		/// <param name="logLevel">The Log level typecode.</param>
		public ConsoleLogger(LoggerLevel logLevel)
		{
			this.m_logLevel = logLevel;
		}

		/// <summary>
		/// Creates a new ConsoleLogger.
		/// </summary>
		/// <param name="name">The Log name.</param>
		public ConsoleLogger(String name)
		{
			this.m_name = name;
		}

		/// <summary>
		/// Creates a new ConsoleLogger.
		/// </summary>
		/// <param name="name">The Log name.</param>
		/// <param name="logLevel">The Log level typecode.</param>
		public ConsoleLogger(String name, LoggerLevel logLevel) : this(name)
		{
			this.m_logLevel = logLevel;
		}

		/// <summary>
		/// Logs a debug message.
		/// </summary>
		/// <param name="message">The Message</param>
		public void Debug(string message)
		{
			Debug(message, null as Exception);
		}

		/// <summary>
		/// Logs a debug message. 
		/// </summary>
		/// <param name="message">The Message</param>
		/// <param name="exception">The Exception</param>
		public void Debug(string message, Exception exception)
		{
			Log(LoggerLevel.Debug, message, exception); 
		}

		/// <summary>
		/// Logs a debug message.
		/// </summary>
		/// <param name="format">Message format</param>
		/// <param name="args">Array of objects to write using format</param>
		public void Debug( string format, params Object[] args )
		{
			Debug(String.Format(format, args));
		}

		/// <summary>
		/// Determines if messages of priority "debug" will be logged.
		/// </summary>
		/// <value>True if "debug" messages will be logged.</value> 
		public bool IsDebugEnabled
		{
			get
			{
				return (m_logLevel <= LoggerLevel.Debug);
			}
		}

		/// <summary>
		/// Logs an info message.
		/// </summary>
		/// <param name="message">The Message</param>
		public void Info( string message )
		{
			Info(message, null as Exception);
		}

		/// <summary>
		/// Logs an info message. 
		/// </summary>
		/// <param name="message">The Message</param>
		/// <param name="exception">The Exception</param>
		public void Info( string message, Exception exception)
		{
			Log(LoggerLevel.Info, message, exception); 
		}

		/// <summary>
		/// Logs an info message.
		/// </summary>
		/// <param name="format">Message format</param>
		/// <param name="args">Array of objects to write using format</param>
		public void Info( string format, params Object[] args )
		{
			Info(String.Format(format, args));
		}

		/// <summary>
		/// Determines if messages of priority "info" will be logged.
		/// </summary>
		/// <value>True if "info" messages will be logged.</value>
		public bool IsInfoEnabled
		{
			get
			{
				return (m_logLevel <= LoggerLevel.Info);
			}
		}

		/// <summary>
		/// Logs a warn message.
		/// </summary>
		/// <param name="message">The Message</param>
		public void Warn(string message )
		{
			Warn(message, null as Exception);
		}

		/// <summary>
		/// Logs a warn message. 
		/// </summary>
		/// <param name="message">The Message</param>
		/// <param name="exception">The Exception</param>
		public void Warn(string message, Exception exception)
		{
			Log(LoggerLevel.Warn, message, exception); 
		}

		/// <summary>
		/// Logs an warn message.
		/// </summary>
		/// <param name="format">Message format</param>
		/// <param name="args">Array of objects to write using format</param>
		public void Warn( string format, params Object[] args )
		{
			Warn(String.Format(format, args));
		}

		/// <summary>
		/// Determines if messages of priority "warn" will be logged.
		/// </summary>
		/// <value>True if "warn" messages will be logged.</value>
		public bool IsWarnEnabled
		{
			get
			{
				return (m_logLevel <= LoggerLevel.Warn);
			}
		}

		/// <summary>
		/// Logs an error message.
		/// </summary>
		/// <param name="message">The Message</param>
		public void Error(string message )
		{
			Error(message, null as Exception);
		}

		/// <summary>
		/// Logs an error message. 
		/// </summary>
		/// <param name="message">The Message</param>
		/// <param name="exception">The Exception</param>
		public void Error(string message, Exception exception)
		{
			Log(LoggerLevel.Error, message, exception); 
		}
+
 		/// <summary>
		/// Logs an error message.
		/// </summary>
		/// <param name="format">Message format</param>
		/// <param name="args">Array of objects to write using format</param>
		public void Error( string format, params Object[] args )
		{
			Error(String.Format(format, args));
		}

		/// <summary>
		/// Determines if messages of priority "error" will be logged.
		/// </summary>
		/// <value>True if "error" messages will be logged.</value>
		public bool IsErrorEnabled
		{
			get
			{
				return (m_logLevel <= LoggerLevel.Error);
			}
		}

		/// <summary>
		/// Logs a fatal error message.
		/// </summary>
		/// <param name="message">The Message</param>
		public void FatalError(string message )
		{
			FatalError(message, null as Exception);
		}

		/// <summary>
		/// Logs a fatal error message.
		/// </summary>
		/// <param name="message">The Message</param>
		/// <param name="exception">The Exception</param>
		public void FatalError(string message, Exception exception)
		{
			Log(LoggerLevel.Fatal, message, exception); 
		}

		/// <summary>
		/// Logs a fatal error message.
		/// </summary>
		/// <param name="format">Message format</param>
		/// <param name="args">Array of objects to write using format</param>
		public void FatalError( string format, params Object[] args )
		{
			FatalError(String.Format(format, args));
		}

		/// <summary>
		/// Determines if messages of priority "fatalError" will be logged.
		/// </summary>
		/// <value>True if "fatalError" messages will be logged.</value>
		public bool IsFatalErrorEnabled
		{
			get 
			{
				return (m_logLevel <= LoggerLevel.Fatal); 
			}
		}

		/// <summary>
		/// A Common method to log.
		/// </summary>
		/// <param name="level">The level of logging</param>
		/// <param name="levelName">The Level name</param>
		/// <param name="message">The Message</param>
		/// <param name="exception">The Exception</param>
		protected void Log(LoggerLevel level, string message, Exception exception) 
		{
			if(m_logLevel <= level)
			{
				Console.Out.WriteLine(string.Format("[{0}] '{1}' {2}", level.ToString(), m_name, message));
				
				if(exception != null)
				{
					Console.Out.WriteLine(exception.StackTrace);
				}
			}
		}

		/// <summary>
		///	Just returns this logger (<c>ConsoleLogger</c> is not hierarchical).
		/// </summary>
		/// <param name="name">Ignored</param>
		/// <returns>This ILogger instance.</returns> 
		public ILogger CreateChildLogger(string name )
		{
			return new ConsoleLogger( String.Format("{0}.{1}", this.m_name, name), m_logLevel );
		}
	}
}

Modified: avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/Logger/DiagnosticsLogger.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/Logger/DiagnosticsLogger.cs	(original)
+++ avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/Logger/DiagnosticsLogger.cs	Sat Jul  3 20:17:47 2004
@@ -10,4 +10,4 @@
 // distributed under the License is distributed on an "AS IS" BASIS,
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
-// limitations under the License.

namespace Apache.Avalon.Framework
{
	using System;
	using System.Diagnostics; 

	/// <summary>
	/// The Logger using standart Diagnostics namespace.
	/// </summary>
	public class DiagnosticsLogger : ILogger
	{
		EventLog m_logger;

		/// <summary>
		/// Creates a logger based on <see cref="System.Diagnostics.EventLog"/>.
		/// </summary>
		/// <param name="logName"><see cref="EventLog.Log"/></param>
		public DiagnosticsLogger(string logName)
		{
			m_logger = new EventLog(logName);
		}

		/// <summary>
		/// Creates a logger based on <see cref="System.Diagnostics.EventLog"/>.
		/// </summary>
		/// <param name="logName"><see cref="EventLog.Log"/></param>
		/// <param name="source"><see cref="EventLog.Source"/></param>
		public DiagnosticsLogger(string logName, string source)
		{
			// Create the source, if it does not already exist.
			if(!EventLog.SourceExists(source))
			{
				EventLog.CreateEventSource(source, logName);
			}

			m_logger = new EventLog(logName); 
		}

		/// <summary>
		/// Creates a logger based on <see cref="System.Diagnostics.EventLog"/>.
		/// </summary>
		/// <param name="logName"><see cref="EventLog.Log"/></param>
		/// <param name="machineName"><see cref="EventLog.MachineName"/></param>
		/// <param name="source"><see cref="EventLog.Source"/></param>
		public DiagnosticsLogger(string logName, string machineName, string source)
		{
			// Create the source, if it does not already exist.
			if(!EventLog.SourceExists(source, machineName))
			{
				EventLog.CreateEventSource(source, logName, machineName);
			}
  			
			m_logger = new EventLog(logName, machineName, source);
		}

		/// <summary>
		/// Logs a debug message.
		/// </summary>
		/// <param name="message">The Message</param>
		public void Debug(string message )
		{
			Debug(message, null as Exception);
		}

		/// <summary>
		/// Logs a debug message. 
		/// </summary>
		/// <param name="message">The Message</param>
		/// <param name="exception">The Exception</param>
		public void Debug(string message, Exception exception)
		{
			System.Diagnostics.Debug.WriteLine(string.Format("message: {0}", message));
			
			if (exception != null)
			{
				System.Diagnostics.Debug.WriteLine(string.Format("exception: {0}", exception));
			}
		}

		/// <summary>
		/// Logs a debug message.
		/// </summary>
		/// <param name="format">Message format</param>
		/// <param name="args">Array of objects to write using format</param>
		public void Debug( string format, params Object[] args )
		{
			Debug(String.Format(format, args), null as Exception);
		}

		/// <summary>
		/// Debug level is always enabled.
		/// </summary>
		/// <value>The Value is always True</value> 
		public bool IsDebugEnabled
		{
			get
			{
				return true;
			}
		}

		/// <summary>
		/// Logs an info message.
		/// </summary>
		/// <param name="message">The Message</param>
		public void Info(string message )
		{
			Info(message, null as Exception);
		}

		/// <summary>
		/// Logs an info message. 
		/// </summary>
		/// <param name="message">The Message</param>
		/// <param name="exception">The Exception</param>
		public void Info(string message, Exception exception)
		{
			Log(message, exception, EventLogEntryType.Information);  
		}

		/// <summary>
		/// Logs an info message.
		/// </summary>
		/// <param name="format">Message format</param>
		/// <param name="args">Array of objects to write using format</param>
		public void Info( string format, params Object[] args )
		{
			Info(String.Format(format, args));
		}

		/// <summary>
		/// Information level is always enabled.
		/// </summary>
		/// <value>The Value is always True</value> 
		public bool IsInfoEnabled
		{
			get
			{
				return true;
			}
		}

		/// <summary>
		/// Logs a warn message.
		/// </summary>
		/// <param name="message">The Message</param>
		public void Warn(string message )
		{
			Warn(message, null as Exception);
		}

		/// <summary>
		/// Logs a warn message. 
		/// </summary>
		/// <param name="message">The Message</param>
		/// <param name="exception">The Exception</param>
		public void Warn(string message, Exception exception)
		{
			Log(message, exception, EventLogEntryType.Warning); 
		}

		/// <summary>
		/// Logs a warn message.
		/// </summary>
		/// <param name="format">Message format</param>
		/// <param name="args">Array of objects to write using format</param>
		public void Warn( string format, params Object[] args )
		{
			Warn(String.Format(format, args));
		}

		/// <summary>
		/// Warning level is always enabled.
		/// </summary>
		/// <value>The Value is always True</value> 
		public bool IsWarnEnabled
		{
			get
			{
				return true;
			}
		}

		/// <summary>
		/// Logs an error message.
		/// </summary>
		/// <param name="message">The Message</param>
		public void Error(string message )
		{
			Error(message, null as Exception);
		}

		/// <summary>
		/// Logs an error message. 
		/// </summary>
		/// <param name="message">The Message</param>
		/// <param name="exception">The Exception</param>
		public void Error(string message, Exception exception)
		{
			Log(message, exception, EventLogEntryType.Error);
		}

		/// <summary>
		/// Logs an error message.
		/// </summary>
		/// <param name="format">Message format</param>
		/// <param name="args">Array of objects to write using format</param>
		public void Error( string format, params Object[] args )
		{
			Error(String.Format(format, args));
		}

		/// <summary>
		/// Error level is always enabled.
		/// </summary>
		/// <value>The Value is always True</value> 
		public bool IsErrorEnabled
		{
			get
			{
				return true;
			}
		}

		/// <summary>
		/// Logs a fatal error message.
		/// </summary>
		/// <param name="message">The Message</param>
		public void FatalError(string message )
		{
			FatalError(message, null as Exception);
		}

		/// <summary>
		/// Logs a fatal error message.
		/// </summary>
		/// <param name="message">The Message</param>
		/// <param name="exception">The Exception</param>
		public void FatalError(string message, Exception exception)
		{
			Log(message, exception, EventLogEntryType.Error);
		}

		/// <summary>
		/// Logs a fatal error message.
		/// </summary>
		/// <param name="format">Message format</param>
		/// <param name="args">Array of objects to write using format</param>
		public void FatalError( string format, params Object[] args )
		{
			FatalError(String.Format(format, args));
		}

		/// <summary>
		/// FatalError level is always enabled.
		/// </summary>
		/// <value>The Value is always True</value> 
		public bool IsFatalErrorEnabled
		{
			get 
			{
				return true; 
			}
		}

		/// <summary>
		/// Create a new logger with the same Log, MachineName and Source properties.
		/// </summary>
		/// <param name="name">Ignored, cause a source can only be registered to one log at a time.</param>
		/// <returns>The New ILogger instance.</returns> 
		/// <exception cref="System.ArgumentException">If the name has an empty element name.</exception>
		public ILogger CreateChildLogger(string name )
		{
			return new DiagnosticsLogger(m_logger.Log, m_logger.MachineName, m_logger.Source);  
		}

		private void Log(string message, Exception exception, EventLogEntryType type)
		{
			string result;

			if (exception == null)
			{
				result = string.Format("message: {0}", message);
			}
			else
			{
				result = string.Format("message: {0}; exception: {1}", message, exception);
			}
			
			m_logger.WriteEntry(result, type);
		}
	}
}
\ No newline at end of file
+// limitations under the License.

namespace Apache.Avalon.Framework
{
	using System;
	using System.Diagnostics; 

	/// <summary>
	/// The Logger using standart Diagnostics namespace.
	/// </summary>
	public class DiagnosticsLogger : ILogger
	{
		private EventLog m_logger;

		/// <summary>
		/// Creates a logger based on <see cref="System.Diagnostics.EventLog"/>.
		/// </summary>
		/// <param name="logName"><see cref="EventLog.Log"/></param>
		public DiagnosticsLogger(string logName)
		{
			m_logger = new EventLog(logName);
		}

		/// <summary>
		/// Creates a logger based on <see cref="System.Diagnostics.EventLog"/>.
		/// </summary>
		/// <param name="logName"><see cref="EventLog.Log"/></param>
		/// <param name="source"><see cref="EventLog.Source"/></param>
		public DiagnosticsLogger(string logName, string source)
		{
			// Create the source, if it does not already exist.
			if(!EventLog.SourceExists(source))
			{
				EventLog.CreateEventSource(source, logName);
			}

			m_logger = new EventLog(logName); 
		}

		/// <summary>
		/// Creates a logger based on <see cref="System.Diagnostics.EventLog"/>.
		/// </summary>
		/// <param name="logName"><see cref="EventLog.Log"/></param>
		/// <param name="machineName"><see cref="EventLog.MachineName"/></param>
		/// <param name="source"><see cref="EventLog.Source"/></param>
		public DiagnosticsLogger(string logName, string machineName, string source)
		{
			// Create the source, if it does not already exist.
			if(!EventLog.SourceExists(source, machineName))
			{
				EventLog.CreateEventSource(source, logName, machineName);
			}
  			
			m_logger = new EventLog(logName, machineName, source);
		}

		/// <summary>
		/// Logs a debug message.
		/// </summary>
		/// <param name="message">The Message</param>
		public void Debug(string message )
		{
			Debug(message, null as Exception);
		}

		/// <summary>
		/// Logs a debug message. 
		/// </summary>
		/// <param name="message">The Message</param>
		/// <param name="exception">The Exception</param>
		public void Debug(string message, Exception exception)
		{
			System.Diagnostics.Debug.WriteLine(string.Format("message: {0}", message));
			
			if (exception != null)
			{
				System.Diagnostics.Debug.WriteLine(string.Format("exception: {0}", exception));
			}
		}

		/// <summary>
		/// Logs a debug message.
		/// </summary>
		/// <param name="format">Message format</param>
		/// <param name="args">Array of objects to write using format</param>
		public void Debug( string format, params Object[] args )
		{
			Debug(String.Format(format, args), null as Exception);
		}

		/// <summary>
		/// Debug level is always enabled.
		/// </summary>
		/// <value>The Value is always True</value> 
		public bool IsDebugEnabled
		{
			get
			{
				return true;
			}
		}

		/// <summary>
		/// Logs an info message.
		/// </summary>
		/// <param name="message">The Message</param>
		public void Info(string message )
		{
			Info(message, null as Exception);
		}

		/// <summary>
		/// Logs an info message. 
		/// </summary>
		/// <param name="message">The Message</param>
		/// <param name="exception">The Exception</param>
		public void Info(string message, Exception exception)
		{
			Log(message, exception, EventLogEntryType.Information);  
		}

		/// <summary>
		/// Logs an info message.
		/// </summary>
		/// <param name="format">Message format</param>
		/// <param name="args">Array of objects to write using format</param>
		public void Info( string format, params Object[] args )
		{
			Info(String.Format(format, args));
		}

		/// <summary>
		/// Information level is always enabled.
		/// </summary>
		/// <value>The Value is always True</value> 
		public bool IsInfoEnabled
		{
			get
			{
				return true;
			}
		}

		/// <summary>
		/// Logs a warn message.
		/// </summary>
		/// <param name="message">The Message</param>
		public void Warn(string message )
		{
			Warn(message, null as Exception);
		}

		/// <summary>
		/// Logs a warn message. 
		/// </summary>
		/// <param name="message">The Message</param>
		/// <param name="exception">The Exception</param>
		public void Warn(string message, Exception exception)
		{
			Log(message, exception, EventLogEntryType.Warning); 
		}

		/// <summary>
		/// Logs a warn message.
		/// </summary>
		/// <param name="format">Message format</param>
		/// <param name="args">Array of objects to write using format</param>
		public void Warn( string format, params Object[] args )
		{
			Warn(String.Format(format, args));
		}

		/// <summary>
		/// Warning level is always enabled.
		/// </summary>
		/// <value>The Value is always True</value> 
		public bool IsWarnEnabled
		{
			get
			{
				return true;
			}
		}

		/// <summary>
		/// Logs an error message.
		/// </summary>
		/// <param name="message">The Message</param>
		public void Error(string message )
		{
			Error(message, null as Exception);
		}

		/// <summary>
		/// Logs an error message. 
		/// </summary>
		/// <param name="message">The Message</param>
		/// <param name="exception">The Exception</param>
		public void Error(string message, Exception exception)
		{
			Log(message, exception, EventLogEntryType.Error);
		}

		/// <summary>
		/// Logs an error message.
		/// </summary>
		/// <param name="format">Message format</param>
		/// <param name="args">Array of objects to write using format</param>
		public void Error( string format, params Object[] args )
		{
			Error(String.Format(format, args));
		}

		/// <summary>
		/// Error level is always enabled.
		/// </summary>
		/// <value>The Value is always True</value> 
		public bool IsErrorEnabled
		{
			get
			{
				return true;
			}
		}

		/// <summary>
		/// Logs a fatal error message.
		/// </summary>
		/// <param name="message">The Message</param>
		public void FatalError(string message )
		{
			FatalError(message, null as Exception);
		}

		/// <summary>
		/// Logs a fatal error message.
		/// </summary>
		/// <param name="message">The Message</param>
		/// <param name="exception">The Exception</param>
		public void FatalError(string message, Exception exception)
		{
			Log(message, exception, EventLogEntryType.Error);
		}

		/// <summary>
		/// Logs a fatal error message.
		/// </summary>
		/// <param name="format">Message format</param>
		/// <param name="args">Array of objects to write using format</param>
		public void FatalError( string format, params Object[] args )
		{
			FatalError(String.Format(format, args));
		}

		/// <summary>
		/// FatalError level is always enabled.
		/// </summary>
		/// <value>The Value is always True</value> 
		public bool IsFatalErrorEnabled
		{
			get 
			{
				return true; 
			}
		}

		/// <summary>
		/// Create a new logger with the same Log, MachineName and Source properties.
		/// </summary>
		/// <param name="name">Ignored, cause a source can only be registered to one log at a time.</param>
		/// <returns>The New ILogger instance.</returns> 
		/// <exception cref="System.ArgumentException">If the name has an empty element name.</exception>
		public ILogger CreateChildLogger(string name )
		{
			return new DiagnosticsLogger(m_logger.Log, m_logger.MachineName, m_logger.Source);  
		}

		private void Log(string message, Exception exception, EventLogEntryType type)
		{
			string result;

			if (exception == null)
			{
				result = string.Format("message: {0}", message);
			}
			else
			{
				result = string.Format("message: {0}; exception: {1}", message, exception);
			}
			
			m_logger.WriteEntry(result, type);
		}
	}
}
\ No newline at end of file

Modified: avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/Logger/ILogEnabled.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/Logger/ILogEnabled.cs	(original)
+++ avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/Logger/ILogEnabled.cs	Sat Jul  3 20:17:47 2004
@@ -13,4 +13,5 @@
 // limitations under the License.
 
 namespace Apache.Avalon.Framework
{
	using System;
+
 	/// <summary>
	/// Components that need to log can implement this interface
	/// to be provided Loggers.
	/// </summary>
	public interface ILogEnabled
	{
		/// <summary>
		/// Provide component with a logger.
		/// </summary>
		/// <param name="logger"> the logger. Must not be null.</param>
		void EnableLogging(ILogger logger);
	}
}

Modified: avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/Logger/ILogger.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/Logger/ILogger.cs	(original)
+++ avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/Logger/ILogger.cs	Sat Jul  3 20:17:47 2004
@@ -21,5 +21,7 @@
 		/// </summary>
		Error,
		/// <summary>
 		/// Fatal logging level
 		/// </summary>
		Fatal
	}

	/// <summary>
	/// This is a facade for the different logging subsystems.
	/// It offers a simplified interface that follows IOC patterns
	/// and a simplified priority/level/severity abstraction. 
	/// </summary>
	public interface ILogger
	{
		/// <summary>
		/// Logs a debug message.
		/// </summary>
		/// <param name="message">The Message</param>
		void Debug( string message );

		/// <summary>
		/// Logs a debug message. 
		/// </summary>
		/// <param name="message">The Message</param>
		/// <param name="exception">The Exception</param>
		void Debug( string message, Exception exception);

		/// <summary>
		/// Logs a debug message.
		/// </summary>
		/// <param name="format">Message format</param>
		/// <param name="args">Array of objects to write using format</param>
		void Debug( string format, params Object[] args );

		/// <summary>
		/// Determines if messages of priority "debug" will be logged.
		/// </summary>
		/// <value>True if "debug" messages will be logged.</value> 
		bool IsDebugEnabled 
		{
			get;
		}
+
 		/// <summary>
		/// Logs an info message.
		/// </summary>
		/// <param name="message">The Message</param>
		void Info( string message );
+
 		/// <summary>
		/// Logs an info message. 
		/// </summary>
		/// <param name="message">The Message</param>
		/// <param name="exception">The Exception</param>
		void Info( string message, Exception exception);

		/// <summary>
		/// Logs an info message.
		/// </summary>
		/// <param name="format">Message format</param>
		/// <param name="args">Array of objects to write using format</param>
		void Info( string format, params Object[] args );

		/// <summary>
		/// Determines if messages of priority "info" will be logged.
		/// </summary>
		/// <value>True if "info" messages will be logged.</value>
		bool IsInfoEnabled
		{
			get;
		}

		/// <summary>
		/// Logs a warn message.
		/// </summary>
		/// <param name="message">The Message</param>
		void Warn( string message );

		/// <summary>
		/// Logs a warn message. 
		/// </summary>
		/// <param name="message">The Message</param>
		/// <param name="exception">The Exception</param>
		void Warn( string message, Exception exception);

		/// <summary>
		/// Logs a warn message.
		/// </summary>
		/// <param name="format">Message format</param>
		/// <param name="args">Array of objects to write using format</param>
		void Warn( string format, params Object[] args );

		/// <summary>
		/// Determines if messages of priority "warn" will be logged.
		/// </summary>
		/// <value>True if "warn" messages will be logged.</value>
		bool IsWarnEnabled
		{
			get;
		}

		/// <summary>
		/// Logs an error message.
		/// </summary>
		/// <param name="message">The Message</param>
		void Error( string message );

		/// <summary>
		/// Logs an error message. 
		/// </summary>
		/// <param name="message">The Message</param>
		/// <param name="exception">The Exception</param>
		void Error( string message, Exception exception);

		/// <summary>
		/// Logs an error message.
		/// </summary>
		/// <param name="format">Message format</param>
		/// <param name="args">Array of objects to write using format</param>
		void Error( string format, params Object[] args );

		/// <summary>
		/// Determines if messages of priority "error" will be logged.
		/// </summary>
		/// <value>True if "error" messages will be logged.</value>
		bool IsErrorEnabled
		{
			get;
		}

		/// <summary>
		/// Logs a fatal error message.
		/// </summary>
		/// <param name="message">The Message</param>
		void FatalError( string message );

		/// <summary>
		/// Logs a fatal error message.
		/// </summary>
		/// <param name="message">The Message</param>
		/// <param name="exception">The Exception</param>
		void FatalError( string message, Exception exception);

		/// <summary>
		/// Logs a fatal error message.
		/// </summary>
		/// <param name="format">Message format</param>
		/// <param name="args">Array of objects to write using format</param>
		void FatalError( string format, params Object[] args );

		/// <summary>
		/// Determines if messages of priority "fatalError" will be logged.
		/// </summary>
		/// <value>True if "fatalError" messages will be logged.</value>
		bool IsFatalErrorEnabled
		{
			get;
		}
		
		/// <summary>
		/// Create a new child logger.
		/// The name of the child logger is [current-loggers-name].[passed-in-name]
		/// </summary>
		/// <param name="name">The Subname of this logger.</param>
		/// <returns>The New ILogger instance.</returns> 
		/// <exception cref="System.ArgumentException">If the name has an empty element name.</exception>
		ILogger CreateChildLogger( string name );
	}		
}

Modified: avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/Logger/NullLogger.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/Logger/NullLogger.cs	(original)
+++ avalon/trunk/central/laboratory/avalon-net/Framework/AvalonFramework/Logger/NullLogger.cs	Sat Jul  3 20:17:47 2004
@@ -12,7 +12,11 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 namespace Apache.Avalon.Framework
{
	using System;
+
 	/// <summary>
	///	The Null Logger class.  This is useful for implementations where you need
	/// to provide a logger to a utility class, but do not want any output from it.
	/// It also helps when you have a utility that does not have a logger to supply.
	/// </summary>
	public class NullLogger: ILogger
	{
		/// <summary>
		/// Creates a new <c>NullLogger</c>.
		/// </summary>
		public NullLogger()
		{
		}
+
 		/// <summary>
		/// No-op.
		/// </summary>
		/// <param name="message">Ignored</param>
		public void Debug(string message )
		{
		}

		/// <summary>
		/// No-op.
		/// </summary>
		/// <param name="message">Ignored</param>
		/// <param name="exception">Ignored</param>
		public void Debug(string message, Exception exception)
		{
		}

		/// <summary>
		/// No-op.
		/// </summary>
		/// <param name="format">Ignored</param>
		/// <param name="args">Ignored</param>
		public void Debug( string format, params Object[] args )
		{
		}

		/// <summary>
		/// No-op.
		/// </summary>
		/// <value>false</value> 
		public bool IsDebugEnabled
		{
			get
			{
				return false;
			}
		}

		/// <summary>
		/// No-op.
		/// </summary>
		/// <param name="message">Ignored</param>
		public void Info( string message )
		{
		}

		/// <summary>
		/// No-op.
		/// </summary>
		/// <param name="message">Ignored</param>
		/// <param name="exception">Ignored</param>
		public void Info( string message, Exception exception)
		{
		}

		/// <summary>
		/// No-op.
		/// </summary>
		/// <param name="format">Ignored</param>
		/// <param name="args">Ignored</param>
		public void Info( string format, params Object[] args )
		{
		}

		/// <summary>
		/// No-op.
		/// </summary>
		/// <value>false</value> 
		public bool IsInfoEnabled
		{
			get
			{
				return false;
			}
		}

		/// <summary>
		/// No-op.
		/// </summary>
		/// <param name="message">Ignored</param>
		public void Warn(string message )
		{
		}

		/// <summary>
		/// No-op.
		/// </summary>
		/// <param name="message">Ignored</param>
		/// <param name="exception">Ignored</param>
		public void Warn(string message, Exception exception)
		{
		}

		/// <summary>
		/// No-op.
		/// </summary>
		/// <param name="format">Ignored</param>
		/// <param name="args">Ignored</param>
		public void Warn( string format, params Object[] args )
		{
		}

		/// <summary>
		/// No-op.
		/// </summary>
		/// <value>false</value> 
		public bool IsWarnEnabled
		{
			get
			{
				return false;
			}
		}

		/// <summary>
		/// No-op.
		/// </summary>
		/// <param name="message">Ignored</param>
		public void Error(string message )
		{
		}
+
 		/// <summary>
		/// No-op.
		/// </summary>
		/// <param name="message">Ignored</param>
		/// <param name="exception">Ignored</param>
		public void Error(string message, Exception exception)
		{
		}

		/// <summary>
		/// No-op.
		/// </summary>
		/// <param name="format">Ignored</param>
		/// <param name="args">Ignored</param>
		public void Error( string format, params Object[] args )
		{
		}

		/// <summary>
		/// No-op.
		/// </summary>
		/// <value>false</value> 
		public bool IsErrorEnabled
		{
			get
			{
				return false;
			}
		}

		/// <summary>
		/// No-op.
		/// </summary>
		/// <param name="message">Ignored</param>
		public void FatalError(string message )
		{
		}

		/// <summary>
		/// No-op.
		/// </summary>
		/// <param name="message">Ignored</param>
		/// <param name="exception">Ignored</param>
		public void FatalError(string message, Exception exception)
		{
		}
+
 		/// <summary>
		/// No-op.
		/// </summary>
		/// <param name="format">Ignored</param>
		/// <param name="args">Ignored</param>
		public void FatalError( string format, params Object[] args )
		{
		}

		/// <summary>
		/// No-op.
		/// </summary>
		/// <value>false</value> 
		public bool IsFatalErrorEnabled
		{
			get 
			{
				return false; 
			}
		}

		/// <summary>
		/// Returns this <c>NullLogger</c>.
		/// </summary>
		/// <param name="name">Ignored</param>
		/// <returns>This ILogger instance.</returns> 
		public ILogger CreateChildLogger(string name )
		{
			return this;
		}
	}
}

---------------------------------------------------------------------
To unsubscribe, e-mail: cvs-unsubscribe@avalon.apache.org
For additional commands, e-mail: cvs-help@avalon.apache.org