title: Reliable encrypted logging for .NET (4.0 - C#)?
body: <p>I'm relatively new to C# so please bear with me. I am looking for a logging solution for my project (desktop small business application). I know this has been asked a zillion times, but I have some additional requirements and questions.</p>
  
  <p>Is there a logging tool for .NET which is (all of the following):</p>
  
  <p>-<strong>reliable</strong> (logging everything that was send to logger, even the very last exception before the crash, log4net doesn't guarantee that)<br>
  -fast <strong>(not blocking the caller -> asynchronous)</strong><br>
  -<strong>thread-safe</strong> (can be called from multiple threads at the same time and write to one file)  </p>
  
  <h2>-<strong>encrypts log files</strong> (or allows totally custom logging - writes only what it gets, no additional information)</h2>
  
  <p>-free</p>
  
  <p>Well, that's my list of requirements. Do you know any tolls which fit? I've read about log4net, but it seems old (uses .NET 2.0 and mainly reinvents the wheel), nlog sounds promising as it is asynchronous, yet again I think it can't encrypt. Also I don't know if both of them are totally thread safe.</p>
  
  <p>Should I just write my own little logger? I thought about making a logging thread, a list (or queue) of logs, and using locking append to the list appropriate logs, logging thread would convert (probably to string, or some parts to string) log objects, encrypt them and save them to a file as soon as possible.</p>
  
  <p>What do you think I should do? 
  Thank you for your ideas and answers.</p>