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/log4
net/trunk/src/Layout/PatternLayout.cs?rev=611621&r1=6116
20&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.Ty
pe))
+ {
+ 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)"/&
gt;
- /// 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/lo
gging/log4net/trunk/src/Repository/Hierarchy/Hierarchy.cs?re
v=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/ConverterIn
fo.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/log
4net/trunk/src/Util/PatternConverter.cs?rev=611621&r1=61
1620&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/log4ne
t/trunk/src/Util/PatternParser.cs?rev=611621&r1=611620&a
mp;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="+formattingI
nfo.Max+",leftAlign="+formattingInfo.LeftAlign+&qu
ot;]");
// 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.Typ
e);
}
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/log4ne
t/trunk/src/Util/PatternString.cs?rev=611621&r1=611620&a
mp;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)"/&
gt; 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.Ty
pe))
+ {
+ 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/PropertyEnt
ry.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/log4ne
t/trunk/src/log4net.vs2005.csproj?rev=611621&r1=611620&a
mp;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="UtilContextPropertiesBase.cs">
<SubType>Code</SubType>
</Compile>
+ <Compile Include="UtilConverterInfo.cs"
/>
<Compile
Include="UtilCountingQuietTextWriter.cs">
<SubType>Code</SubType>
</Compile>
 -637,6
+638,7 
<Compile
Include="UtilPropertiesDictionary.cs">
<SubType>Code</SubType>
</Compile>
+ <Compile Include="UtilPropertyEntry.cs"
/>
<Compile
Include="UtilProtectCloseTextWriter.cs">
<SubType>Code</SubType>
</Compile>
|