• Sign in to Neowin Faster!

    Create an account on Neowin to contribute and support the site.

  • 0
Sign in to follow this  

Reference: Logging


DevTech    1,518

Any discussion on logging, Microsoft's Application insights and similar topics are welcome.


No particular reason, just adapting a post I made in another thread so the information is more accessible.


In the case of logging, I think every programmer gets the urge to make their own logging libary and too many give in to that itch and upload something to GitHub. The noise level for logging is rarher high - there are simply too many great logging libraries and too many crap ones and well just too many....


So I will try to point out a few things.




The most efficient low overhead logging is ETW which is built into every Windows computer and was originally  used only inside of device drivers. A while back Microsoft released the API for user level usage. A logging lib that targets ETW is worth looking at if you are confident of always running on Windows.




https://github.com/aspnet/Logging Abstraction layer used by the ASP.NET team - targets: 



Other interesting C# libs


https://github.com/NLog -popular project

https://github.com/neuecc/EtwStream - ETW lib

https://github.com/Microsoft/Microsoft.Diagnostics.Tracing.Logging - ETW lib from Microsoft

https://github.com/eth0izzle/NLog.Slack - NLog target for Slack - the trendy company Microsoft tried to buy but they wanted billions 

https://github.com/narratr/story - don't just log, tell a story!

https://github.com/elmah/Elmah - still popular

https://github.com/codetuner/Arebis.Web.Mvc.ElmahDashboard - hey, it's a dashboard!

https://github.com/Microsoft/ApplicationInsights-dotnet-logging - logging adapters to target Microsoft's Applic ation Insights

https://github.com/OmniKits/RxLog - logging for the Reactive crowd


Edited by DevTech
added Reference to the title to suggest old thread not get locked
  • Like 1

Share this post

Link to post
Share on other sites

3 answers to this question

Recommended Posts

  • 0
DevTech    1,518

Cloud/Server based logging


Note: There must be some sort of unlimited time free tier plan/option for it to be listed here.


Please help to complete the list if you can. Any description of your experience with a product would be welcome.



Microsoft HockeyApp with Xamarin Insights



Microsoft Mobile Engagement



Microsoft Application Insights















.NET Client for Loggly  - https://github.com/neutmute/loggly-csharp









Collect customer data with one API and send it to hundreds of tools for analytics, marketing, and data warehousing.

Track events in your web and mobile apps using our libraries. We’ll normalize the data and send it to integrations and warehouses.





Host Your Own Server








Source: https://github.com/exceptionless/Exceptionless



Apache Flume




"Apache Flume is a distributed, reliable, and available service for efficiently collecting, aggregating, and moving large amounts of log data. Its main goal is to deliver data from applications to Apache Hadoop's HDFS. It has a simple and flexible architecture based on streaming data flows. It is robust and fault tolerant with tunable reliability mechanisms and many failover and recovery mechanisms. It uses a simple extensible data model that allows for online analytic applications."





NO Free Plan


Expecting anyone to test and evaluate an infrastructure component in 30 days is plain absurd and can't possibly be a recipe for sales success, but for completeness I will more or less try to update the list of stupid products:







Note: uses OSS from http://www.raboof.com/projects/elmah/  but is not affiliated with the elmah logging framework











Microsoft Azure Event Hubs




Edited by DevTech
more updates after added Servers after added Flume

Share this post

Link to post
Share on other sites
  • 0
DevTech    1,518

UWP Logging


- must support the UWP specific subset of .NET

- must support Async


Section 1 - Checking the main .NET Logging Frameworks


1. NLog - http://nlog-project.org/






2. Apache log4net - http://logging.apache.org/log4net/





3. Elmah - https://github.com/elmah/Elmah



Designed for ASP.NET so I won't bother looking for a UWP version.


4. Serilog - http://serilog.net/





"The supported platforms are .NET 4.5, Windows 8 (WinRT) and Windows Phone 8"support

https://github.com/serilog/serilog/issues/684 marked as fixed re UWP


5. Exceptionless - https://exceptionless.com/





Uses PCL to support UWP



6. Event Tracing for Windows (ETW)




For UWP, ETW is exposed to the UWP Runtime via Windows.Foundation.Diagnostics





7. Common.Logging - http://net-commons.github.io/common-logging/



UWP is one of the directly supported frameworks.





Section 2 - Lesser known logging frameworks specific to UWP



1. MetroLog - https://github.com/onovotny/MetroLog



2. WindowsUniversalLogger - https://github.com/PavelGriza/windows-universal-logger






Share this post

Link to post
Share on other sites
  • 0
DevTech    1,518

Logging Proxies


The idea behind Logging Proxies seems logical at first. Since there are so many Logging Frameworks that come and go, rise to prominence and then fall to obscurity (and unsupported status) it seems to make sense to create a layer between your application and the various logging frameworks so that different frameworks can be switched in and out.


This is such a BAD IDEA in so many ways and hopefully I can list the reasons to avoid this strategy over time. However, there are always special cases that make one person's bad idea into anther persons good idea for what they are trying to accomplish. (Need to resist long rant on the stupidity of Unit Testing, SOLID and other silly Social Memes that infect the development world)


Reasons This Proxy Thing is a Bad Idea:

  • Efficiency - while normally I'm not a great fan of starting out by looking at efficiency and all things surrounding the idea of making Machine Time more valuable than Human Time, one of the primary psychological barriers to adopting extensive tracing and logging in software is the obvious overhead of code that doesn't contribute to the application functionality (although long term evolution and stability is also a program feature) So adding a proxy layer just makes the "Groan Factor" just that much worse.
  • LCD - Lowest common denominator - Logging Frameworks can be extremely complex and it would be impossible to get good feature coverage particularly when you consider all the possible Sources, Sinks and Filters
  • Hubris - An active OSS Logging Project will most likely be well supported long after your pathetic software gets the last budget cut from your Dilbert Manager.
  • Architecture Astronaut - nuff said.
  • many more reasons to come...



ASP.NET Logging


https://github.com/aspnet/Logging Abstraction layer used by the ASP.NET team - targets: 





- http://net-commons.github.io/common-logging/


  • Log4Net (v1.2.9 - v1.2.15)
  • NLog (v1.0 - v4.1)
  • Microsoft Enterprise Library Logging Application Block (v3.1 - v6.0)
  • Microsoft AppInsights
  • Microsoft Event Tracing for Windows (ETW)*



Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.