Question

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.

 

ETW

 

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.

 

ASP.NET GitHub

 

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
Link to comment
https://www.neowin.net/forum/topic/1295406-reference-logging/
Share on other sites

3 answers to this question

Recommended Posts

  • 0

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

https://www.hockeyapp.net/features/

 

Microsoft Mobile Engagement

https://azure.microsoft.com/en-us/services/mobile-engagement/

 

Microsoft Application Insights

https://azure.microsoft.com/en-us/documentation/articles/app-insights-overview/

 

Datadog

https://www.datadoghq.com/

 

Exceptionless

https://exceptionless.com/

 

Seq

https://getseq.net/

 

Loggly

https://www.loggly.com/

 

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

 

 

Loggr

http://loggr.net/

 

Segment

https://segment.com/

 

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.

https://segment.com/integrations

https://segment.com/warehouses

 

 

Host Your Own Server

 

JSNLog

http://jsnlog.com/

 

Exceptionless

https://exceptionless.com/

 

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

https://github.com/exceptionless/Exceptionless/wiki/Self-Hosting

 

Apache Flume

https://cwiki.apache.org/confluence/display/FLUME/Home

https://github.com/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:

 

elmah.io

https://elmah.io/

 

https://github.com/elmahio

 

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

 

Stackify

http://stackify.com/

 

Splunk

https://www.splunk.com/

 

Raygun

https://raygun.com/

 

Microsoft Azure Event Hubs

https://azure.microsoft.com/en-us/services/event-hubs/

 

 

Edited by DevTech
more updates after added Servers after added Flume
  • 0

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/

 

NOT WORKING

https://github.com/NLog/NLog/issues/1492

 

 

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

 

NOT WORKING

http://logging.apache.org/log4net/release/framework-support.html

 

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

 

NOT WORKING

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

 

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

 

WORKING

https://github.com/serilog/serilog/wiki/Getting-Started

 

"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/

 

WORKING

 

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

Uses PCL to support UWP

https://github.com/exceptionless/Exceptionless.Net/issues/23

 

6. Event Tracing for Windows (ETW)

 

WORKING

 

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

 

https://msdn.microsoft.com/en-us/library/windows/apps/windows.foundation.diagnostics.loggingchannel.aspx

 

 

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

 

WORKING

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

 

 

 

 

 

  • 0

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: 

 

 

Common.Logging

 

- 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)*

 

 

This topic is now closed to further replies.