Using System;
Using System. Collections. Generic;
Using System. Linq;
Using System. Text;
Using log4net. Appender;
Using System. Windows. Forms;
Using log4net. Core;
Using log4net. Layout;
Namespace UI
{
/// <Summary>
/// Usage:
/// Log4net. Config. BasicConfigurator. Configure ();
/// Var logPattern = "% date [% thread] %-5 level % logger! % M-% message % newline ";
/// Var logAppender = new TextBoxBaseAppender ()
///{
/// TextBox = this. textBox2,
/// Layout = new PatternLayout (logPattern)
///};
///
/// (Log4net. Repository. Hierarchy. Hierarchy) log4net. LogManager. GetLoggerRepository (). Root. AddAppender (logAppender );
/// </Summary>
Public class TextBoxBaseAppender: AppenderSkeleton
{
Public TextBoxBase TextBox {get; set ;}
Public TextBoxBaseAppender ()
{
}
Protected override void Append (LoggingEvent loggingEvent)
{
If (this. TextBox = null)
{
Return;
}
If (! This. TextBox. IsHandleCreated)
{
Return;
}
If (this. TextBox. IsDisposed)
{
Return;
}
Var patternLayout = this. Layout as PatternLayout;
Var str = string. Empty;
If (patternLayout! = Null)
{
Str = patternLayout. Format (loggingEvent );
If (loggingEvent. ExceptionObject! = Null)
{
Str + = loggingEvent. ExceptionObject. ToString () + Environment. NewLine;
}
}
Else
{
Str = loggingEvent. LoggerName + "-" + loggingEvent. RenderedMessage + Environment. NewLine;
}
If (! This. TextBox. InvokeRequired)
{
This. TextBox. AppendText (str );
}
Else
{
This. TextBox. BeginInvoke (MethodInvoker) delegate
{
If (! This. TextBox. IsHandleCreated)
{
Return;
}
If (this. TextBox. IsDisposed)
{
Return;
}
This. TextBox. AppendText (str );
});
}
}
}
}