ConcurrentFileWriter (nuget): A class library for managing multi-threaded sequential write access to one or more files. It is capable of flushing writes from multiple threads in batches by either hitting a specified size threshold or a specified inactivity time limit. It is also possible to write this batching information within the output file(s). Note: This class should be injected as a single or static instance shared across all process threads. Files will be locked exclusively from the first Write() call until FlushAndClose() or Dispose() is called (presently one of these *must* be explicitly called to ensure all data is flushed).  The ConcurrentFileWriter class can be found as an extension of System.IO  *** Full debugging source/symbols are available from http://srv.symbolsource.org/pdb/Public  Usage Example:  var cfw = new ConcurrentFileWriter(new ConcurrentFileWriterSettings {              flushTimeInMilliseconds = 5000,              flushSizeInBytes = 10000,              showWriteBatchingMarkers = true                 });  //Pre-lock file (not required) cfw.Write(@"c:\temp\test.log", null);  //Append a string (byte arrays can also be directly written) cfw.WriteUtf8Line(@"c:\temp\test.log", "Test Line");  //Flush and unlock specified file (stop managing) cfw.CloseManagedFile(@"c:\temp\test.log");  //Flush and unlock all managed files cfw.Dispose();
Keywords: log|logging|sequential|append|appender|file|writer|parallel|concurrent|multi-thread|thread-safe|cross-thread|managed|manager|fast|optimized|high-performance|batch|batches|batched|batching|auto|flush|timer