Be up and running in minutes

Just Add the Loupe Agent from NuGet

// Add this line during application initialization
Log.StartSession();

// And add this line during application shutdown
Log.EndSession();

By simply adding a NuGet package and a couple lines of initialization code to your project, Loupe will record:

  • Unhandled exceptions
  • Trace messages written via System.Diagnostics or Console
  • Trace messages logged via Log4net or NLog
  • ASP.NET MVC controller events
  • ASP.NET Page metrics for ASP.NET
  • Messages raised by ASP.NET Health Monitoring
  • Windows performance counters for memory, CPU, GC, etc
  • SQL statements and processing time for Entity Framework
  • Assemblies loaded by your app with version info
  • Hardware and software configuration of the computer

Check out our Getting Started Guide for the exact integration code for various .NET project types.

Easy Logging API Built In

You can connect Loupe to an existing logging system - like NLog or log4net but it works great on its own too.

Here are a few examples of additional logging using Loupe’s extensive logging API.

Exceptions handled in catch blocks

Log.RecordException(e, category, isFatal);

Additional logging

Log.Critical("Period.Delimited.Category", "This is a critical problem",
    "We are writing a test message with multiple insertion strings: {0} {1} {2}",
    "string", 124, DateTime.Now);
Log.Warning("Period.Delimited.Category", "This might be a problem problem",
    "You don't have to provide insertion strings if you don't want to");

Detailed exceptions captured for any message

Any of the different severities can include details of an exception. Don’t bother dumping it in the message area; it’ll all be showing in the Loupe Desktop under the Exception.

Exception ex = new InvalidOperationException("This is an example invalid operation exception");
Log.Error(ex, "Your Application.Exceptions", "We had an odd exception but managed to recover",
    "Here's a description of what we were doing.  We don't need to provide exception data.");

Asynchronous by default, synchronous when necessary

If you think the application might crash immediately after you call to record the message you might want to make just this message synchronous.

Log.Critical(LogWriteMode.WaitForCommit, "Your.Category", "We had a problem and may crash",
    "Just like our first method above we can now provide extended detail with insertion strings");
Log.Verbose("Your.Category", "This is our lowest severity message",
    "Verbose is like a debug or success message - below all other severities.");

Aspect-oriented logging without coding

[GTrace]
void ExecuteQuery(string sql) {
        // Do something
}

Rock solid centralized logging

Unlimited applications, unlimited errors, scalable from solo startup to enterprise.