/V2.2/trunk/CAL/Desktop/Composite/Logging/TextLogger.cs
C# | 92 lines | 42 code | 8 blank | 42 comment | 5 complexity | 8e3d9c527f9f6a45fd7bf0d9885918b9 MD5 | raw file
- //===================================================================================
- // Microsoft patterns & practices
- // Composite Application Guidance for Windows Presentation Foundation and Silverlight
- //===================================================================================
- // Copyright (c) Microsoft Corporation. All rights reserved.
- // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY
- // OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT
- // LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- // FITNESS FOR A PARTICULAR PURPOSE.
- //===================================================================================
- // The example companies, organizations, products, domain names,
- // e-mail addresses, logos, people, places, and events depicted
- // herein are fictitious. No association with any real company,
- // organization, product, domain name, email address, logo, person,
- // places, or events is intended or should be inferred.
- //===================================================================================
- using System;
- using System.Globalization;
- using System.IO;
- using Microsoft.Practices.Composite.Properties;
-
- namespace Microsoft.Practices.Composite.Logging
- {
- /// <summary>
- /// Implementation of <see cref="ILoggerFacade"/> that logs into a <see cref="TextWriter"/>.
- /// </summary>
- public class TextLogger : ILoggerFacade, IDisposable
- {
- private readonly TextWriter writer;
-
- /// <summary>
- /// Initializes a new instance of <see cref="TextLogger"/> that writes to
- /// the console output.
- /// </summary>
- public TextLogger()
- : this(Console.Out)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of <see cref="TextLogger"/>.
- /// </summary>
- /// <param name="writer">The writer to use for writing log entries.</param>
- public TextLogger(TextWriter writer)
- {
- if (writer == null)
- throw new ArgumentNullException("writer");
-
- this.writer = writer;
- }
-
- /// <summary>
- /// Write a new log entry with the specified category and priority.
- /// </summary>
- /// <param name="message">Message body to log.</param>
- /// <param name="category">Category of the entry.</param>
- /// <param name="priority">The priority of the entry.</param>
- public void Log(string message, Category category, Priority priority)
- {
- string messageToLog = String.Format(CultureInfo.InvariantCulture, Resources.DefaultTextLoggerPattern, DateTime.Now,
- category.ToString().ToUpper(CultureInfo.InvariantCulture), message, priority.ToString());
-
- writer.WriteLine(messageToLog);
- }
-
- /// <summary>
- /// Disposes the associated <see cref="TextWriter"/>.
- /// </summary>
- /// <param name="disposing">When <see langword="true"/>, disposes the associated <see cref="TextWriter"/>.</param>
- protected virtual void Dispose(bool disposing)
- {
- if (disposing)
- {
- if (writer != null)
- {
- writer.Dispose();
- }
- }
- }
-
- ///<summary>
- ///Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
- ///</summary>
- /// <remarks>Calls <see cref="Dispose(bool)"/></remarks>.
- ///<filterpriority>2</filterpriority>
- public void Dispose()
- {
- Dispose(true);
- GC.SuppressFinalize(this);
- }
- }
- }