[ 
http://issues.apache.org/jira/browse/LOG4NET-31?page=comments#action_65850 ]
     
Nicko Cadell commented on LOG4NET-31:
-------------------------------------

The 'log4net:ERROR XmlHierarchyConfigurator: Cannot find Property [address] to 
set object on [log4net.Layout.PatternLayout+ConverterInfo]' error is expected 
because the XmlHierarchyConfigurator uses reflection to set the values of 
properties on objects using the XML as a source.

There are a couple of ways of achieving your example with the current 
implementation. First you could write 2 converters, one for the HomeAddress and 
one for the WorkAddress, then select which one to use in the config file. 
Alternatively you could write 1 converter which parses the Home/Work tag from 
the start of the Option string, i.e. you would write in the pattern 
%user-converter{Home:Ron}. The converter could split the Option string on the 
colon to decide what to do.

These workarounds are not as generalised as what you are suggesting.

> Allow user to pass in additional parameters to <converter> node via some kind 
> of <property> tag
> -----------------------------------------------------------------------------------------------
>
>          Key: LOG4NET-31
>          URL: http://issues.apache.org/jira/browse/LOG4NET-31
>      Project: Log4net
>         Type: Improvement
>     Reporter: Ron Grabowski
>     Priority: Minor

>
> It would be useful if the user was able to supply additional properties to 
> the <convert> tag in the form of:
>  <property name="foo" value="bar" />
>  <property name="Hello" value="World" />
> The code below uses a <property> node to determine if the HomeAddress or the 
> WorkAddress will appear in the log message. If the parameter is not present, 
> the converter prints a default value.
>  <converter>
>   <name value="user-converter" />
>   <type value="Company.Project.Logging.UserConverter, Company.Project" />
>   <property name="Address" value="HomeAddress" />
>  </converter>
>  <conversionPattern value="%p %d %user-converter{Nicko} - %m%n" />
> The <property> tags would be accessible via a Properties IDictionary. It 
> would allow the converter to perform additional logic on the base.Option that 
> was passed in:
>  public class MyConverter : PatternConverter
>  {
>   override protected void Convert(TextWriter writer, object state) 
>   {
>    User user = GetUserByUserName(base.Option);
>    string address = base.Properties["Address"] as string;
>    if (address != null && address.Length > 0)
>    {
>     if (user != null)
>     {
>      switch (address)
>      {
>       case "HomeAddress": writer.Write(user.HomeAddress); break;
>       case "WorkAddress": writer.Write(user.WorkdAddress); break;
>      }
>     }
>     else
>     {
>      // ???
>     }
>    }
>    else
>    {
>     // default display
>     writer.Write(user.HomeAddress); break;   
>    }
>   }
>  }

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to