No, the configurations are pretty simple, although I have a custom appender.
I guess it should not affect the file appender, but here it is:
Appender code:
public class FormAppender : AppenderSkeleton
{
public static Dictionary<string, ListBox> outputLists = new Dictionary<string, ListBox>();
public static InvokeDelegate Invoke;
protected override void Append(LoggingEvent loggingEvent)
{
if (MyOutputList != null)
{
AddItemThreadSafeDelegate del = AddItemThreadSafe;
Invoke(del, new object[] { loggingEvent });
}
}
protected override bool RequiresLayout
{
get { return true; }
}
private delegate void AddItemThreadSafeDelegate(LoggingEvent loggingEvent);
private void AddItemThreadSafe(LoggingEvent loggingEvent)
{
string text = RenderLoggingEvent(loggingEvent);
text = text.Trim('\n', '\r', ' ');
MyOutputList.Items.Insert(0, text);
// Purge old message
lock (MyOutputList)
{
if (MyOutputList.Items.Count > 1500)
{
while (MyOutputList.Items.Count > 1400)
MyOutputList.Items.RemoveAt(MyOutputList.Items.Count - 1);
}
}
}
private ListBox MyOutputList
{
get { return outputLists[Name] }
}
}
To Setup the appender by code:
FormAppender.outputLists.Add("WinAppender-MainLog", lbLog);
FormAppender.outputLists.Add("WinAppender-DeviceLog", lbDeviceOutput);
FormAppender.Invoke = Invoke;
XmlConfigurator.ConfigureAndWatch(new FileInfo("log4net.config"));
log = LogManager.GetLogger(GetType());
The config file:
<!-- WINDOW APPENDER -->
<appender name="WinAppender-MainLog" type="RollCaller.UI.Admin.Win.FormAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %-5level %logger - %message%newline" />
</layout>
</appender>
<appender name="WinAppender-DeviceLog" type="RollCaller.UI.Admin.Win.FormAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date - %message%newline" />
</layout>
</appender>
<!-- FILE APPENDER -->
<appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
<file value="Logs\Log.txt" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="2MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="WinAppender-MainLog" />
<appender-ref ref="FileAppender" />
</root>
... other loggers ...
Now I’m wondering if the lock may cause a delay in all appenders and produce such weird behavior. I’ll disable it, but it’ll take me all the day to figure out if it keeps failing.
Thanks,
Diego