| #region Copyright & License |
| // |
| // Copyright 2001-2005 The Apache Software Foundation |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // 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. |
| // |
| #endregion |
| |
| using System; |
| using System.Collections; |
| |
| namespace log4net |
| { |
| /// <summary> |
| /// Implementation of Mapped Diagnostic Contexts. |
| /// </summary> |
| /// <remarks> |
| /// <note> |
| /// <para> |
| /// The MDC is deprecated and has been replaced by the <see cref="ThreadContext.Properties"/>. |
| /// The current MDC implementation forwards to the <c>ThreadContext.Properties</c>. |
| /// </para> |
| /// </note> |
| /// <para> |
| /// The MDC class is similar to the <see cref="NDC"/> class except that it is |
| /// based on a map instead of a stack. It provides <i>mapped |
| /// diagnostic contexts</i>. A <i>Mapped Diagnostic Context</i>, or |
| /// MDC in short, is an instrument for distinguishing interleaved log |
| /// output from different sources. Log output is typically interleaved |
| /// when a server handles multiple clients near-simultaneously. |
| /// </para> |
| /// <para> |
| /// The MDC is managed on a per thread basis. |
| /// </para> |
| /// </remarks> |
| /// <threadsafety static="true" instance="true" /> |
| /// <author>Nicko Cadell</author> |
| /// <author>Gert Driesen</author> |
| /*[Obsolete("MDC has been replaced by ThreadContext.Properties")]*/ |
| public sealed class MDC |
| { |
| #region Private Instance Constructors |
| |
| /// <summary> |
| /// Initializes a new instance of the <see cref="MDC" /> class. |
| /// </summary> |
| /// <remarks> |
| /// Uses a private access modifier to prevent instantiation of this class. |
| /// </remarks> |
| private MDC() |
| { |
| } |
| |
| #endregion Private Instance Constructors |
| |
| #region Public Static Methods |
| |
| /// <summary> |
| /// Gets the context value identified by the <paramref name="key" /> parameter. |
| /// </summary> |
| /// <param name="key">The key to lookup in the MDC.</param> |
| /// <returns>The string value held for the key, or a <c>null</c> reference if no corresponding value is found.</returns> |
| /// <remarks> |
| /// <note> |
| /// <para> |
| /// The MDC is deprecated and has been replaced by the <see cref="ThreadContext.Properties"/>. |
| /// The current MDC implementation forwards to the <c>ThreadContext.Properties</c>. |
| /// </para> |
| /// </note> |
| /// <para> |
| /// If the <paramref name="key" /> parameter does not look up to a |
| /// previously defined context then <c>null</c> will be returned. |
| /// </para> |
| /// </remarks> |
| /*[Obsolete("MDC has been replaced by ThreadContext.Properties")]*/ |
| public static string Get(string key) |
| { |
| object obj = ThreadContext.Properties[key]; |
| if (obj == null) |
| { |
| return null; |
| } |
| return obj.ToString(); |
| } |
| |
| /// <summary> |
| /// Add an entry to the MDC |
| /// </summary> |
| /// <param name="key">The key to store the value under.</param> |
| /// <param name="value">The value to store.</param> |
| /// <remarks> |
| /// <note> |
| /// <para> |
| /// The MDC is deprecated and has been replaced by the <see cref="ThreadContext.Properties"/>. |
| /// The current MDC implementation forwards to the <c>ThreadContext.Properties</c>. |
| /// </para> |
| /// </note> |
| /// <para> |
| /// Puts a context value (the <paramref name="val" /> parameter) as identified |
| /// with the <paramref name="key" /> parameter into the current thread's |
| /// context map. |
| /// </para> |
| /// <para> |
| /// If a value is already defined for the <paramref name="key" /> |
| /// specified then the value will be replaced. If the <paramref name="val" /> |
| /// is specified as <c>null</c> then the key value mapping will be removed. |
| /// </para> |
| /// </remarks> |
| /*[Obsolete("MDC has been replaced by ThreadContext.Properties")]*/ |
| public static void Set(string key, string value) |
| { |
| ThreadContext.Properties[key] = value; |
| } |
| |
| /// <summary> |
| /// Removes the key value mapping for the key specified. |
| /// </summary> |
| /// <param name="key">The key to remove.</param> |
| /// <remarks> |
| /// <note> |
| /// <para> |
| /// The MDC is deprecated and has been replaced by the <see cref="ThreadContext.Properties"/>. |
| /// The current MDC implementation forwards to the <c>ThreadContext.Properties</c>. |
| /// </para> |
| /// </note> |
| /// <para> |
| /// Remove the specified entry from this thread's MDC |
| /// </para> |
| /// </remarks> |
| /*[Obsolete("MDC has been replaced by ThreadContext.Properties")]*/ |
| public static void Remove(string key) |
| { |
| ThreadContext.Properties.Remove(key); |
| } |
| |
| /// <summary> |
| /// Clear all entries in the MDC |
| /// </summary> |
| /// <remarks> |
| /// <note> |
| /// <para> |
| /// The MDC is deprecated and has been replaced by the <see cref="ThreadContext.Properties"/>. |
| /// The current MDC implementation forwards to the <c>ThreadContext.Properties</c>. |
| /// </para> |
| /// </note> |
| /// <para> |
| /// Remove all the entries from this thread's MDC |
| /// </para> |
| /// </remarks> |
| /*[Obsolete("MDC has been replaced by ThreadContext.Properties")]*/ |
| public static void Clear() |
| { |
| ThreadContext.Properties.Clear(); |
| } |
| |
| #endregion Public Static Methods |
| } |
| } |