private IFileAppenderFactory GetFileAppenderFactory()
{
if (!this.KeepFileOpen)
{
return RetryingMultiProcessFileAppender.TheFactory;
}
else if (this.NetworkWrites)
{
return RetryingMultiProcessFileAppender.TheFactory;
}
else if (this.ConcurrentWrites)
{
#if !SupportsMutex
return RetryingMultiProcessFileAppender.TheFactory;
#elif MONO
//
// mono on Windows uses mutexes, on Unix - special appender
//
if (PlatformDetector.IsUnix)
{
return UnixMultiProcessFileAppender.TheFactory;
}
else if (PlatformDetector.SupportsSharableMutex)
{
return MutexMultiProcessFileAppender.TheFactory;
}
else
{
return RetryingMultiProcessFileAppender.TheFactory;
}
#else
if (!PlatformDetector.SupportsSharableMutex)
return RetryingMultiProcessFileAppender.TheFactory;
else if (!this.ForceMutexConcurrentWrites && PlatformDetector.IsDesktopWin32 && !PlatformDetector.IsMono)
return WindowsMultiProcessFileAppender.TheFactory;
else
return MutexMultiProcessFileAppender.TheFactory;
#endif
}
else if (IsArchivingEnabled())
return CountingSingleProcessFileAppender.TheFactory;
else
return SingleProcessFileAppender.TheFactory;
}