Log4net
  1. Log4net
  2. LOG4NET-31

Allow user to pass in additional parameters to <converter> node via some kind of <property> tag

    Details

    • Type: Improvement Improvement
    • Status: Resolved
    • Priority: Minor Minor
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 1.2.11
    • Component/s: None
    • Labels:
      None

      Description

      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; }

      }
      }

        Issue Links

          Activity

            People

            • Assignee:
              Ron Grabowski
              Reporter:
              Ron Grabowski
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development