Author: rgrabowski
Date: Sun Jan 13 10:43:11 2008
New Revision: 611621
URL: http://svn.apache.org/viewvc?rev=611621&view=rev
Log:
Fix for LOG4NET-31. Allow additional properties to be passed to Converters
configured via xml. Moved Hierarchy.PropertyEntry into its own class. Moved
PatternString.ConverterInfo into its own class.
Added:
logging/log4net/trunk/src/Util/ConverterInfo.cs
logging/log4net/trunk/src/Util/PropertyEntry.cs
Modified:
logging/log4net/trunk/src/Layout/PatternLayout.cs
logging/log4net/trunk/src/Repository/Hierarchy/Hierarchy.cs
logging/log4net/trunk/src/Util/PatternConverter.cs
logging/log4net/trunk/src/Util/PatternParser.cs
logging/log4net/trunk/src/Util/PatternString.cs
logging/log4net/trunk/src/log4net.vs2005.csproj
Modified: logging/log4net/trunk/src/Layout/PatternLayout.cs
URL:
http://svn.apache.org/viewvc/logging/log4net/trunk/src/Layout/PatternLayout.cs?rev=611621&r1=611620&r2=611621&view=diff
==============================================================================
--- logging/log4net/trunk/src/Layout/PatternLayout.cs (original)
+++ logging/log4net/trunk/src/Layout/PatternLayout.cs Sun Jan 13 10:43:11 2008
@@ -965,7 +965,10 @@
// Add all the builtin patterns
foreach(DictionaryEntry entry in s_globalRulesRegistry)
{
- patternParser.PatternConverters[entry.Key] =
entry.Value;
+ ConverterInfo converterInfo = new ConverterInfo();
+ converterInfo.Name = (string)entry.Key;
+ converterInfo.Type = (Type)entry.Value;
+ patternParser.PatternConverters[entry.Key] = converterInfo;
}
// Add the instance patterns
foreach(DictionaryEntry entry in
m_instanceRulesRegistry)
@@ -1066,7 +1069,13 @@
/// </remarks>
public void AddConverter(ConverterInfo converterInfo)
{
- AddConverter(converterInfo.Name, converterInfo.Type);
+ if (converterInfo == null) throw new
ArgumentNullException("converterInfo");
+
+ if (!typeof(PatternConverter).IsAssignableFrom(converterInfo.Type))
+ {
+ throw new ArgumentException("The converter type specified [" +
converterInfo.Type + "] must be a subclass of log4net.Util.PatternConverter",
"converterInfo");
+ }
+ m_instanceRulesRegistry[converterInfo.Name] = converterInfo;
}
/// <summary>
@@ -1087,66 +1096,14 @@
/// </remarks>
public void AddConverter(string name, Type type)
{
- if (name == null) throw new
ArgumentNullException("name");
- if (type == null) throw new
ArgumentNullException("type");
+ if (name == null) throw new ArgumentNullException("name");
+ if (type == null) throw new ArgumentNullException("type");
- if (!typeof(PatternConverter).IsAssignableFrom(type))
- {
- throw new ArgumentException("The converter type
specified ["+type+"] must be a subclass of log4net.Util.PatternConverter",
"type");
- }
- m_instanceRulesRegistry[name] = type;
- }
+ ConverterInfo converterInfo = new ConverterInfo();
+ converterInfo.Name = name;
+ converterInfo.Type = type;
- /// <summary>
- /// Wrapper class used to map converter names to converter types
- /// </summary>
- /// <remarks>
- /// <para>
- /// Pattern converter info class used during configuration to
- /// pass to the <see
cref="PatternLayout.AddConverter(ConverterInfo)"/>
- /// method.
- /// </para>
- /// </remarks>
- public sealed class ConverterInfo
- {
- private string m_name;
- private Type m_type;
-
- /// <summary>
- /// default constructor
- /// </summary>
- public ConverterInfo()
- {
- }
-
- /// <summary>
- /// Gets or sets the name of the conversion pattern
- /// </summary>
- /// <remarks>
- /// <para>
- /// The name of the pattern in the format string
- /// </para>
- /// </remarks>
- public string Name
- {
- get { return m_name; }
- set { m_name = value; }
- }
-
- /// <summary>
- /// Gets or sets the type of the converter
- /// </summary>
- /// <remarks>
- /// <para>
- /// The value specified must extend the
- /// <see cref="PatternConverter"/> type.
- /// </para>
- /// </remarks>
- public Type Type
- {
- get { return m_type; }
- set { m_type = value; }
- }
+ AddConverter(converterInfo);
}
}
}
Modified: logging/log4net/trunk/src/Repository/Hierarchy/Hierarchy.cs
URL:
http://svn.apache.org/viewvc/logging/log4net/trunk/src/Repository/Hierarchy/Hierarchy.cs?rev=611621&r1=611620&r2=611621&view=diff
==============================================================================
--- logging/log4net/trunk/src/Repository/Hierarchy/Hierarchy.cs (original)
+++ logging/log4net/trunk/src/Repository/Hierarchy/Hierarchy.cs Sun Jan 13
10:43:11 2008
@@ -1027,63 +1027,6 @@
Properties[propertyEntry.Key] = propertyEntry.Value;
}
- /// <summary>
- /// A class to hold the key and data for a property set in the
config file
- /// </summary>
- /// <remarks>
- /// <para>
- /// A class to hold the key and data for a property set in the
config file
- /// </para>
- /// </remarks>
- internal class PropertyEntry
- {
- private string m_key = null;
- private object m_value = null;
-
- /// <summary>
- /// Property Key
- /// </summary>
- /// <value>
- /// Property Key
- /// </value>
- /// <remarks>
- /// <para>
- /// Property Key.
- /// </para>
- /// </remarks>
- public string Key
- {
- get { return m_key; }
- set { m_key = value; }
- }
-
- /// <summary>
- /// Property Value
- /// </summary>
- /// <value>
- /// Property Value
- /// </value>
- /// <remarks>
- /// <para>
- /// Property Value.
- /// </para>
- /// </remarks>
- public object Value
- {
- get { return m_value; }
- set { m_value = value; }
- }
-
- /// <summary>
- /// Override <c>Object.ToString</c> to return sensible
debug info
- /// </summary>
- /// <returns>string info about this object</returns>
- public override string ToString()
- {
- return "PropertyEntry(Key="+m_key+",
Value="+m_value+")";
- }
- }
-
#endregion Private Instance Methods
#region Private Instance Fields
Added: logging/log4net/trunk/src/Util/ConverterInfo.cs
URL:
http://svn.apache.org/viewvc/logging/log4net/trunk/src/Util/ConverterInfo.cs?rev=611621&view=auto
==============================================================================
--- logging/log4net/trunk/src/Util/ConverterInfo.cs (added)
+++ logging/log4net/trunk/src/Util/ConverterInfo.cs Sun Jan 13 10:43:11 2008
@@ -0,0 +1,73 @@
+using System;
+
+namespace log4net.Util
+{
+ /// <summary>
+ /// Wrapper class used to map converter names to converter types
+ /// </summary>
+ /// <remarks>
+ /// <para>
+ /// Pattern converter info class used during configuration by custom
+ /// PatternString and PatternLayer converters.
+ /// </para>
+ /// </remarks>
+ public sealed class ConverterInfo
+ {
+ private string m_name;
+ private Type m_type;
+ private readonly PropertiesDictionary properties = new
PropertiesDictionary();
+
+ /// <summary>
+ /// default constructor
+ /// </summary>
+ public ConverterInfo()
+ {
+ }
+
+ /// <summary>
+ /// Gets or sets the name of the conversion pattern
+ /// </summary>
+ /// <remarks>
+ /// <para>
+ /// The name of the pattern in the format string
+ /// </para>
+ /// </remarks>
+ public string Name
+ {
+ get { return m_name; }
+ set { m_name = value; }
+ }
+
+ /// <summary>
+ /// Gets or sets the type of the converter
+ /// </summary>
+ /// <remarks>
+ /// <para>
+ /// The value specified must extend the
+ /// <see cref="PatternConverter"/> type.
+ /// </para>
+ /// </remarks>
+ public Type Type
+ {
+ get { return m_type; }
+ set { m_type = value; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="entry"></param>
+ public void AddProperty(PropertyEntry entry)
+ {
+ properties[entry.Key] = entry.Value;
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public PropertiesDictionary Properties
+ {
+ get { return properties; }
+ }
+ }
+}
Modified: logging/log4net/trunk/src/Util/PatternConverter.cs
URL:
http://svn.apache.org/viewvc/logging/log4net/trunk/src/Util/PatternConverter.cs?rev=611621&r1=611620&r2=611621&view=diff
==============================================================================
--- logging/log4net/trunk/src/Util/PatternConverter.cs (original)
+++ logging/log4net/trunk/src/Util/PatternConverter.cs Sun Jan 13 10:43:11 2008
@@ -372,5 +372,16 @@
}
#endregion
+
+ private PropertiesDictionary properties;
+
+ /// <summary>
+ ///
+ /// </summary>
+ public PropertiesDictionary Properties
+ {
+ get { return properties; }
+ set { properties = value; }
+ }
}
}
Modified: logging/log4net/trunk/src/Util/PatternParser.cs
URL:
http://svn.apache.org/viewvc/logging/log4net/trunk/src/Util/PatternParser.cs?rev=611621&r1=611620&r2=611621&view=diff
==============================================================================
--- logging/log4net/trunk/src/Util/PatternParser.cs (original)
+++ logging/log4net/trunk/src/Util/PatternParser.cs Sun Jan 13 10:43:11 2008
@@ -27,6 +27,7 @@
using log4net.Layout;
using log4net.Core;
using log4net.DateFormatter;
+using log4net.Layout.Pattern;
using log4net.Util;
namespace log4net.Util
@@ -324,8 +325,8 @@
LogLog.Debug(declaringType, "Converter
["+converterName+"] Option ["+option+"] Format
[min="+formattingInfo.Min+",max="+formattingInfo.Max+",leftAlign="+formattingInfo.LeftAlign+"]");
// Lookup the converter type
- Type converterType =
(Type)m_patternConverters[converterName];
- if (converterType == null)
+ ConverterInfo converterInfo =
(ConverterInfo)m_patternConverters[converterName];
+ if (converterInfo == null)
{
LogLog.Error(declaringType, "Unknown converter
name ["+converterName+"] in conversion pattern.");
}
@@ -335,19 +336,20 @@
PatternConverter pc = null;
try
{
- pc =
(PatternConverter)Activator.CreateInstance(converterType);
+ pc =
(PatternConverter)Activator.CreateInstance(converterInfo.Type);
}
catch(Exception createInstanceEx)
{
- LogLog.Error(declaringType, "Failed to
create instance of Type ["+converterType.FullName+"] using default constructor.
Exception: "+createInstanceEx.ToString());
+ LogLog.Error(declaringType, "Failed to create instance of
Type [" + converterInfo.Type.FullName + "] using default constructor.
Exception: " + createInstanceEx.ToString());
}
// formattingInfo variable is an instance
variable, occasionally reset
// and used over and over again
pc.FormattingInfo = formattingInfo;
pc.Option = option;
+ pc.Properties = converterInfo.Properties;
- IOptionHandler optionHandler = pc as
IOptionHandler;
+ IOptionHandler optionHandler = pc as IOptionHandler;
if (optionHandler != null)
{
optionHandler.ActivateOptions();
Modified: logging/log4net/trunk/src/Util/PatternString.cs
URL:
http://svn.apache.org/viewvc/logging/log4net/trunk/src/Util/PatternString.cs?rev=611621&r1=611620&r2=611621&view=diff
==============================================================================
--- logging/log4net/trunk/src/Util/PatternString.cs (original)
+++ logging/log4net/trunk/src/Util/PatternString.cs Sun Jan 13 10:43:11 2008
@@ -236,7 +236,7 @@
/// </list>
/// <para>
/// Additional pattern converters may be registered with a specific
<see cref="PatternString"/>
- /// instance using <see
cref="AddConverter(PatternString.ConverterInfo)"/> or
+ /// instance using <see cref="AddConverter(ConverterInfo)"/> or
/// <see cref="AddConverter(string, Type)" />.
/// </para>
/// <para>
@@ -399,7 +399,10 @@
// Add all the builtin patterns
foreach(DictionaryEntry entry in s_globalRulesRegistry)
{
- patternParser.PatternConverters.Add(entry.Key,
entry.Value);
+ ConverterInfo converterInfo = new ConverterInfo();
+ converterInfo.Name = (string)entry.Key;
+ converterInfo.Type = (Type)entry.Value;
+ patternParser.PatternConverters.Add(entry.Key, converterInfo);
}
// Add the instance patterns
foreach(DictionaryEntry entry in
m_instanceRulesRegistry)
@@ -464,7 +467,13 @@
/// </remarks>
public void AddConverter(ConverterInfo converterInfo)
{
- AddConverter(converterInfo.Name, converterInfo.Type);
+ if (converterInfo == null) throw new
ArgumentNullException("converterInfo");
+
+ if (!typeof(PatternConverter).IsAssignableFrom(converterInfo.Type))
+ {
+ throw new ArgumentException("The converter type specified [" +
converterInfo.Type + "] must be a subclass of log4net.Util.PatternConverter",
"converterInfo");
+ }
+ m_instanceRulesRegistry[converterInfo.Name] = converterInfo;
}
/// <summary>
@@ -482,66 +491,11 @@
if (name == null) throw new
ArgumentNullException("name");
if (type == null) throw new
ArgumentNullException("type");
- if (!typeof(PatternConverter).IsAssignableFrom(type))
- {
- throw new ArgumentException("The converter type
specified ["+type+"] must be a subclass of log4net.Util.PatternConverter",
"type");
- }
- m_instanceRulesRegistry[name] = type;
- }
-
- /// <summary>
- /// Wrapper class used to map converter names to converter types
- /// </summary>
- /// <remarks>
- /// <para>
- /// Wrapper class used to map converter names to converter types
- /// </para>
- /// </remarks>
- public sealed class ConverterInfo
- {
- private string m_name;
- private Type m_type;
-
- /// <summary>
- /// default constructor
- /// </summary>
- public ConverterInfo()
- {
- }
-
- /// <summary>
- /// Gets or sets the name of the conversion pattern
- /// </summary>
- /// <value>
- /// The name of the conversion pattern
- /// </value>
- /// <remarks>
- /// <para>
- /// Gets or sets the name of the conversion pattern
- /// </para>
- /// </remarks>
- public string Name
- {
- get { return m_name; }
- set { m_name = value; }
- }
+ ConverterInfo converterInfo = new ConverterInfo();
+ converterInfo.Name = name;
+ converterInfo.Type = type;
- /// <summary>
- /// Gets or sets the type of the converter
- /// </summary>
- /// <value>
- /// The type of the converter
- /// </value>
- /// <remarks>
- /// <para>
- /// Gets or sets the type of the converter
- /// </para>
- /// </remarks>
- public Type Type
- {
- get { return m_type; }
- set { m_type = value; }
- }
+ AddConverter(converterInfo);
}
}
}
Added: logging/log4net/trunk/src/Util/PropertyEntry.cs
URL:
http://svn.apache.org/viewvc/logging/log4net/trunk/src/Util/PropertyEntry.cs?rev=611621&view=auto
==============================================================================
--- logging/log4net/trunk/src/Util/PropertyEntry.cs (added)
+++ logging/log4net/trunk/src/Util/PropertyEntry.cs Sun Jan 13 10:43:11 2008
@@ -0,0 +1,59 @@
+namespace log4net.Util
+{
+ /// <summary>
+ /// A class to hold the key and data for a property set in the config file
+ /// </summary>
+ /// <remarks>
+ /// <para>
+ /// A class to hold the key and data for a property set in the config file
+ /// </para>
+ /// </remarks>
+ public class PropertyEntry
+ {
+ private string m_key = null;
+ private object m_value = null;
+
+ /// <summary>
+ /// Property Key
+ /// </summary>
+ /// <value>
+ /// Property Key
+ /// </value>
+ /// <remarks>
+ /// <para>
+ /// Property Key.
+ /// </para>
+ /// </remarks>
+ public string Key
+ {
+ get { return m_key; }
+ set { m_key = value; }
+ }
+
+ /// <summary>
+ /// Property Value
+ /// </summary>
+ /// <value>
+ /// Property Value
+ /// </value>
+ /// <remarks>
+ /// <para>
+ /// Property Value.
+ /// </para>
+ /// </remarks>
+ public object Value
+ {
+ get { return m_value; }
+ set { m_value = value; }
+ }
+
+ /// <summary>
+ /// Override <c>Object.ToString</c> to return sensible debug info
+ /// </summary>
+ /// <returns>string info about this object</returns>
+ public override string ToString()
+ {
+ return "PropertyEntry(Key=" + m_key + ", Value=" + m_value + ")";
+ }
+ }
+}
Modified: logging/log4net/trunk/src/log4net.vs2005.csproj
URL:
http://svn.apache.org/viewvc/logging/log4net/trunk/src/log4net.vs2005.csproj?rev=611621&r1=611620&r2=611621&view=diff
==============================================================================
--- logging/log4net/trunk/src/log4net.vs2005.csproj (original)
+++ logging/log4net/trunk/src/log4net.vs2005.csproj Sun Jan 13 10:43:11 2008
@@ -543,6 +543,7 @@
<Compile Include="Util\ContextPropertiesBase.cs">
<SubType>Code</SubType>
</Compile>
+ <Compile Include="Util\ConverterInfo.cs" />
<Compile Include="Util\CountingQuietTextWriter.cs">
<SubType>Code</SubType>
</Compile>
@@ -637,6 +638,7 @@
<Compile Include="Util\PropertiesDictionary.cs">
<SubType>Code</SubType>
</Compile>
+ <Compile Include="Util\PropertyEntry.cs" />
<Compile Include="Util\ProtectCloseTextWriter.cs">
<SubType>Code</SubType>
</Compile>