What's the most widely-used logging framework in C#?
2009 Answer: Equivalent of log4j for .NET platform is log4net and I am guessing it's widely used.
2019 Answer: Here are a variety of alternatives from https://github.com/quozd/awesome-dotnet/blob/master/README.md#logging:
- Essential Diagnostics - Extends the inbuilt features of System.Diagnostics namespace to provide flexible logging
- NLog - NLog - Advanced .NET and Silverlight logging
- Logazmic - Open source NLog viewer for Windows
- ELMAH - Official ELMAH site
- Elmah MVC - Elmah for MVC
- Logary - Logary is a high performance, multi-target logging, metric, tracing and health-check library for Mono and .NET. .NET's answer to DropWizard. Supports many targets, built for micro-services.
- Log4Net - The Apache log4net library is a tool to help the programmer output log statements to a variety of output targets
- com.csutil.Log - A lightweight zero config Log wrapper that can be combined with other logging libraries like Serilog for more complex usecases.
- Serilog - A no-nonsense logging library for the NoSQL era. Combines the best of traditional and structured diagnostic logging in an easy-to-use package.
- StackExchange.Exceptional - Error handler used for the Stack Exchange network
- Semantic Logging Application Block (SLAB) - Extends the inbuilt features of System.Diagnostics.Tracing namespace (EventSource class) to log to several sinks including Azure Tables, Databases, files (JSON, XML, text). Supports in-process and out-of-process logging through ETW, and Rx for real-time filtering/aggregating of events.
- Foundatio - A fluent logging API that can be used to log messages throughout your application.
- Exceptionless - Exceptionless .NET Client
- Loupe - Centralized .NET logging and monitoring. [Proprietary] [Free Tier]
- elmah.io - Cloud logging for .NET web applications using ELMAH. Find bugs before you go live. Powerful search, API, integration with Slack, GitHub, Visual Studio and more. [Free for OSS] [$]
- BugSnag - Logs errors. Includes useful diagnostic info like stack trace, session, release, etc. Has a free tier. [Free for OSS][$]
Have used NLog successfully in numerous projects.
We use our own logging classes, implemented by calling log4net. This allows us to take advantage of this flexible and widely-used framework while avoiding thousands of direct references to it in the source code.