A portable logging abstraction for .NET that allows switching between different logging implementations like log4net, NLog, and Serilog.
Common.Logging is a portable logging abstraction library for .NET. It provides a unified interface that allows developers to write logging code independent of the underlying logging framework, enabling easy switching between implementations like log4net, NLog, Serilog, and Microsoft's logging tools. It solves the problem of vendor lock-in and simplifies maintenance in projects that may need to change logging systems over time.
.NET developers and teams building applications that require flexible, maintainable logging solutions, especially those working on large-scale or long-lived projects where logging requirements may evolve.
Developers choose Common.Logging because it decouples application code from specific logging frameworks, providing future-proof flexibility. Its simple abstraction and easy configuration via XML make it a lightweight yet powerful tool for avoiding logging framework lock-in.
A portable logging abstraction for .NET
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Allows seamless switching between log4net, NLog, Serilog, and others without code changes, as demonstrated in the quickstart examples for different adapters.
Provides base classes and dedicated NuGet packages that simplify integrating various logging systems, reducing boilerplate code and setup effort.
Covers multiple logging frameworks including Application Insights and ETW, ensuring compatibility across diverse .NET environments and use cases.
Supports XML configuration in app.config or web.config for straightforward setup and customization, as shown in the configuration snippets.
Requires installing specific adapter packages for each logging framework version (e.g., NLog41 vs NLog40), which can lead to dependency conflicts and maintenance overhead.
Heavily relies on XML configuration, which is less dynamic and harder to manage in modern .NET projects compared to code-based configuration methods.
The README acknowledges periodic build failures due to CI tooling issues, indicating potential reliability problems and sporadic maintenance.