Getting Started - What's New - Version 2.1.1
In This Topic
New Features in This Release
Log Viewing Enhancements
- Millisecond Time: You can switch the Timestamp column to show milliseconds, enabling you to see the precise timing of events in the log.
- Time span Indicator: Whenever more than one log message is selected, the total time span of the current selection is displayed in the upper right of the toolbar. This enables you to quickly determine the gap in milliseconds between two messages.
Metric Charting Enhancements
Charting of Event Metrics was substantially improved in this release based on end user feedback. New features include:
- Detailed Data Display: The details of each group of data in the chart including all of the individual samples that were brought together to create that detail is instantly available in a grid at the bottom of the chart.
- Sample Suppression: You can suppress individual samples or whole groups of samples quickly to adjust the analysis.
- Multiple Metric Support: You can display multiple metrics with multiple definitions on the same chart.
- Top Value Synchronization: Previously if the Top records feature was enabled it was evaluated independently for each series on the chart. Now the top is applied to the first series and only those matching groups are used in the secondary series.
- Large Numbers of Groups: Previously the entire set of groups for a chart were fit onto the screen at the same time, even if that meant they were displayed on top of each other. Now the chart will scroll to respect a minimum size for each group.
- Long Text Values: When grouping or displaying very long text values (like long SQL queries) the chart would previously fail to display if the text couldn't be fit onto the screen. Now it will be intelligently truncated in each display mode to ensure the chart can display, and the full value is always available through drilling into the group.
- Show and Hide Elements: You can control whether many of the chart elements such as titles, labels, and legend are displayed.
- Percentile Summarization: A new method of summarizing numerical values has been added to calculate the 95th percentile peak value. This is particularly useful for examining duration and performance information.
For more information on metric charting see Loupe Desktop - Metric Chart.
Agent Log Message Alert Event
The central Log object now has a Message Alert event that will be raised every time a warning, error, or critical message is recorded. This event has a number of safety features such as:
- Asynchronous: The event is raised on a background thread that is not part of the logging path, ensuring that time spent handling the event will not slow down logging or affect other threads.
- Batching: When a burst of messages are recorded that qualify they will typically be raised together to allow more efficient processing
- Throttling: A minimum delay between events can be easily specified to ensure the event isn't raised too frequently, particularly in error cascade scenarios. Messages are batched up until the next time the event can be raised.
- Hang Protection: If the event handler never returns the Agent will continue to process messages and not queue them, allowing them to be released from memory.
- Loop Protection: Messages that are recorded by your event handler will not cause additional events to be raised. This prevents notification loops where an event handler records an error during notification which subsequently causes the message alert notification to be raised again.
The Message Alert event is particularly useful for automatically triggering immediate data transmission in the case of an error or implementing your own error notification mechanism. The full detail of each log message is available in the event.
For more information including usage scenarios, see Developer's Guide - Log Message Alerting.
Agent Send Email Message
You can now easily send an email using the same email configuration provided to the Loupe Agent using the new SendMessage Method.
Anonymous Data Collection
You can now anonymize the data collected by Loupe with a single configuration setting. This prevents it from gathering or sending personally identifying information to you. For more information see Reference - Anonymous Data Collection.
Agent Recording Detailed Memory Counters
The Agent now supports an option for gathering an extended set of .NET-specific performance counters designed to assist in tracking down memory leaks. The set of counters included is:
- .NET CLR Memory/# GC Handles
- .NET CLR Memory/# Bytes in all Heaps
- .NET CLR Memory/# Gen 0 Collections
- .NET CLR Memory/# Gen 1 Collections
- .NET CLR Memory/# Gen 2 Collections
- .NET CLR Memory/Large Object Heap Size
- .NET CLR Memory/Gen 0 heap size
- .NET CLR Memory/Gen 1 heap size
- .NET CLR Memory/Gen 2 heap size
- .NET CLR Memory% Time in GC
The option is not enabled by default. To enable it, set the EnableMemoryPerformance option to true.
Agent Disk Counters
Previously, the Agent recorded PhysicalDisk performance counters because these are active by default back to Windows 2000. Based on user requests and other research the Agent now records the same counters under LogicalDisk. This works better in server scenarios that use certain RAID controllers. Additionally, the following counters have been added:
- % Free Disk Space
- Avg. Disk sec/Transfer
- Disk Reads/sec
- Disk Writes/sec
- Free Megabytes
For more information on how performance counters are recorded see Developer's Guide - Metrics - Performance Counters.
Agent Integration with Server
The Agent now handles the scenario where a Server has expired (either the Loupe Service or an evaluation license for a Private Server) and will efficiently treat it as unavailable, falling back to alternate transfer methods as appropriate.
PostSharp Enhancements
The Loupe Agent for PostSharp has been enhanced to provide the option to suppress logging object parameters that aren't strings. Previously these would always be converted to a string, meaning that if they overrode ToString() to provided enhanced information that would all be recorded into the session data, often causing a significant performance issue. This behavior is now optional and can be disabled by setting the LogParameterDetails Property to false. Additionally, when recording an object without details it is now recorded as the type name and object hash code, allowing the exact object to be identified through multiple calls without requiring the overhead of converting its state to a string.
Defects Fixed In This Release
This is the list of issues fixed since the last release version (2.1.0.588)
Agent
- Fixed: Agent ignores message provided to StartSession(string) method, substituting the default message instead.
- Fixed: Agent can be slow to shut down if performance counters are being recorded during shutdown.
- Fixed: Browsing for a location to save a package to in the Packager Dialog can change the Save File Dialog path for the rest of the application.
- Fixed: Agent treated all threads in the same application domain with the same Thread Id as the same thread which isn't necessarily true in processes that create and destroy threads over time.
- Fixed: Agent PackageSendEventArgs doesn't inherit from EventArgs and should.
- Fixed: Agent doesn't record disk performance counters for physical disks with multiple mounted volumes.
Loupe Desktop
- Fixed: Displaying Top Count doesn't flow to secondary axis correctly.
- Fixed: Metric Chart doesn't include the top value when auto-ranging.
- Fixed: Metric Chart fails to display when any X axis label exceeds the chart display area.
- Fixed: Metric Grid fails to filter on Timestamp.
- Fixed: Metric Grid doesn't respect decimal settings on grouping summarization display.
- Fixed: Log Messages Grid doesn't correctly support filtering by less than or greater than a Timestamp.
- Fixed: Log Message Detail shows incorrect ordinal of log message in window title.
- Fixed: Double-Clicking a metric chart, grid, or graph causes the pane to float which in turn causes errors in the session viewer.
- Fixed: Repository file size is incorrect when over 2GB.
- Fixed: Repository doesn't correctly clean up partially recorded sessions, causing display errors if the partial record is accessed.
- Fixed: Changing between hub accounts doesn't remove server subscription.
- Fixed: Repository Viewer doesn't group computers, products, or applications that vary only by case together when populating filter combo boxes.
- Fixed: Loupe Desktop reports fatal error when first run in certain cultures like Russian (ru-RU).
- Fixed: User-defined folders in the user repository can disappear after restarting Loupe Desktop despite being still in the repository.
- Fixed: Application Error Details Report doesn't format problem percentage as percentage.
- Fixed: Product Health Analysis report doesn't format Time Used in HH:MM:SS format, leaving it in raw (total seconds) form.
- Fixed: Report footers don't reflect licensed user status and owner caption.
Compatibility Notes
Because of the API changes, the Assembly Version for the Loupe Agent and related assemblies is now 2.1.1.0. If you have references that are set to a specific version they will need to be updated to use this new assembly and then recompiled. Any strong named assembly that references the Loupe Agent or related assemblies will also have to be recompiled.
See Also
Loupe Desktop
Third Party Integration
Developer's Guide
Metrics
Reference