You can create your own template that eludes newline characters.
This provides a more flexible solution than another answer, because you can use it with any application.
I followed these articles to implement my own template converter, which replaces newline characters with spaces:
https://dejanfajfar.wordpress.com/2011/04/14/log4net-custom-layoutpattern/
http://www.hanselman.com/blog/CreatingYourOwnCustomPatternLayoutPatternParserAndPatternConvertorWithLog4net.aspx
PatternConverter :
using System.IO;
using log4net.Util;
public class EncodedMessagePatternConvertor : PatternConverter
{
protected override void Convert(TextWriter writer, object state)
{
var loggingEvent = state as log4net.Core.LoggingEvent;
if (loggingEvent == null)
return;
var encodedMessage = loggingEvent.RenderedMessage.Replace("\r", " ").Replace("\n", " ");
writer.Write(encodedMessage);
}
}
PatternLayout :
using log4net.Layout;
using log4net.Util;
public class CustomPatternLayout : PatternLayout
{
public CustomPatternLayout()
{
AddConverter(new ConverterInfo { Name = "encodedmessage", Type = typeof(EncodedMessagePatternConvertor) });
}
}
appender :
<appender name="SomeAppender" type"...">
...
<layout type="YourNamespace.CustomPatternLayout, YourAssemblyName">
<conversionPattern value="%date %-5level %logger %encodedmessage %newline" />
</layout>
</appender>
"encodedmessage" , , AddConverter .
, Convert .