How to make a part of log4net message uppercase

log4net, uppercase

Solution

The solution suggested by Ron Grabowski is extending PatternConverter.

public class HostNameToUpperConverter : PatternConverter
{
    protected override void Convert(TextWriter writer, object state)
    {
        string hostName = (string)GlobalContext.Properties[LoggingEvent.HostNameProperty];
        writer.Write(hostName.ToUpper());
    }
}

usage in configuration file:

<layout type="log4net.Layout.PatternLayout">
        <converter>
          <name value="hostNameToUpper" />
          <type value="MyApplication.HostNameToUpperConverter" />
        </converter>
        <conversionPattern value="[%hostNameToUpper] - %message" />
</layout>

Problem

I'm using AdoNetAppender to log messages. I've added %property{log4net:HostName} conversion pattern to the message parameter. ``` <parameter> <parameterName value="@message"/> <dbType value="String"/> <size value="4000"/> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="[%property{log4net:HostName}] - %message"/> </layout> </parameter> ``` Output is like [hostname] - foo bar. But i want the output like [HOSTNAME] - foo bar. How can i make the hostname uppercase using conversion patterns? Regards, Cankut

Original source