Skip to content

Instantly share code, notes, and snippets.

@taylorc
Created May 12, 2013 11:40
Show Gist options
  • Save taylorc/5563272 to your computer and use it in GitHub Desktop.
Save taylorc/5563272 to your computer and use it in GitHub Desktop.
Custom AppenderSkeleton
public class CustomMemoryAppender : AppenderSkeleton
{
private readonly StringBuilder logBuffer;
readonly StringWriter stringWriter;
private readonly object lockObject = new object();
public CustomMemoryAppender()
{
logBuffer = new StringBuilder();
stringWriter = new StringWriter(logBuffer);
}
protected override void Append(LoggingEvent loggingEvent)
{
lock (lockObject)
{
if (Layout == null)
{
logBuffer.AppendLine(string.Format("{0} - {1}", loggingEvent.Level, loggingEvent.RenderedMessage));
}
else
{
Layout.Format(stringWriter, loggingEvent);
}
}
}
public string ReadBuffer()
{
lock (lockObject)
{
string retVal = logBuffer.ToString();
logBuffer.Clear();
return retVal;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment