NLog is a .NET logging library designed with simplicity and flexibility in mind. With NLog you can process diagnostic messages emitted from any .NET language, augment them with contextual information, format them according to your preference and send them to one or more targets.
The API (application programming interface) is similar to log4net, and the configuration is very simple. NLog uses a routing table while log4net uses a logger hierarchy with attachable appenders. This makes NLog's configuration very easy to read and maintain.
NLog is licensed under the terms of BSD license, which permits commercial use and the source code is available to anyone at no cost. Everyone is encouraged to test it and report feedback to the mailing list.
NLog supports .NET, C/C++ and COM interop API so that all your application components including legacy modules written in C++/COM can send their messages through a common log routing engine.
NLog makes it possible to send the your application trace to the following targets:
- File (one or more files using sophisticated naming, automatic file archiving and highly-optimized multi-process file append routines)
- Console (also supports by-level, by-keyword and by-condition highlighting) [View screenshot]
- Event Log
- Network receiver (TCP/UDP are supported)
- WebServices (SOAP)
- ASP.NET trace
- MSMQ-based message queues
- Chainsaw and NLogViewer applications (log4j-compatible log receivers)
- in-process method calls
- and many more as described here
NLog supports the following advanced features:
- asynchronous logging
- load balancing
- buffering with post-filtering
- exception logging
- ASP.NET per-request buffering
The following plaforms/frameworks are supported:
- .NET Framework 1.0/1.1/2.0
- .NET Compact Framework 1.0/2.0
- Mono Project 1.0/2.0
Documentation for NLog is available at http://www.nlog-project.org/