85 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			85 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C#
		
	
	
	
|   | // ----------------------------------------------------------------------- | |||
|  | // <copyright file="Log.cs" company=""> | |||
|  | // Triangle.NET code by Christian Woltering, http://triangle.codeplex.com/ | |||
|  | // </copyright> | |||
|  | // ----------------------------------------------------------------------- | |||
|  | 
 | |||
|  | namespace TriangleNet | |||
|  | { | |||
|  |     using System.Collections.Generic; | |||
|  |     using TriangleNet.Logging; | |||
|  | 
 | |||
|  |     /// <summary> | |||
|  |     /// A simple logger, which logs messages to a List. | |||
|  |     /// </summary> | |||
|  |     /// <remarks>Using singleton pattern as proposed by Jon Skeet. | |||
|  |     /// http://csharpindepth.com/Articles/General/Singleton.aspx | |||
|  |     /// </remarks> | |||
|  |     public sealed class Log : ILog<LogItem> | |||
|  |     { | |||
|  |         /// <summary> | |||
|  |         /// Log detailed information. | |||
|  |         /// </summary> | |||
|  |         public static bool Verbose { get; set; } | |||
|  | 
 | |||
|  |         private List<LogItem> log = new List<LogItem>(); | |||
|  | 
 | |||
|  |         private LogLevel level = LogLevel.Info; | |||
|  | 
 | |||
|  |         #region Singleton pattern | |||
|  | 
 | |||
|  |         private static readonly Log instance = new Log(); | |||
|  | 
 | |||
|  |         // Explicit static constructor to tell C# compiler | |||
|  |         // not to mark type as beforefieldinit | |||
|  |         static Log() { } | |||
|  | 
 | |||
|  |         private Log() { } | |||
|  | 
 | |||
|  |         public static ILog<LogItem> Instance | |||
|  |         { | |||
|  |             get | |||
|  |             { | |||
|  |                 return instance; | |||
|  |             } | |||
|  |         } | |||
|  | 
 | |||
|  |         #endregion | |||
|  | 
 | |||
|  |         public void Add(LogItem item) | |||
|  |         { | |||
|  |             log.Add(item); | |||
|  |         } | |||
|  | 
 | |||
|  |         public void Clear() | |||
|  |         { | |||
|  |             log.Clear(); | |||
|  |         } | |||
|  | 
 | |||
|  |         public void Info(string message) | |||
|  |         { | |||
|  |             log.Add(new LogItem(LogLevel.Info, message)); | |||
|  |         } | |||
|  | 
 | |||
|  |         public void Warning(string message, string location) | |||
|  |         { | |||
|  |             log.Add(new LogItem(LogLevel.Warning, message, location)); | |||
|  |         } | |||
|  | 
 | |||
|  |         public void Error(string message, string location) | |||
|  |         { | |||
|  |             log.Add(new LogItem(LogLevel.Error, message, location)); | |||
|  |         } | |||
|  | 
 | |||
|  |         public IList<LogItem> Data | |||
|  |         { | |||
|  |             get { return log; } | |||
|  |         } | |||
|  | 
 | |||
|  |         public LogLevel Level | |||
|  |         { | |||
|  |             get { return level; } | |||
|  |         } | |||
|  |     } | |||
|  | } |