We are using log4net and have found great flexibility with it. We also have our own wrapper class which is used in all of our projects allowing us to use static methods for writing to the defined logs. Log4net comes with one dll, and of course our wrapper dll. It is easy to extend this for added functionality, our wrapper class now allows us to write to the windows event logs if/when needed.
There are plenty of examples of how to implement log4net, and it provides alot of ways to write/send log information:
http://logging.apache.org/log4net/release/config-examples.html
Example implementation of our wrapper:
Log.Error("Message", this);
Log.Error("Message", Exception, this);
Log.Error("Message", Exception, Type);
Log.Info("Message", this);
Log.Warn("Message", this);