In PostSharp 6.1, we primarily focused on two directions: the logging API so that we can cope with distributed systems, and the debugging experience. Additionally, we fixed gapped in .NET Standard and C# 7.3 support.
Important
Despite being a minor version, PostSharp 6.1 contains some low-impact breaking changes in the logging API. The chances that you would be negatively affected are minor. See Breaking Changes in PostSharp 6.1 for details.
Logging: major improvements in the front-end API
We've worked hard to improve the scenario of logging high-load distributed systems (such microservices) into a structured database (such as Elastic Search), and enable statistical processing of the log records.
To achieve this goal, we had to bring several improvements to PostSharp Logging:
Semantic-First Logging, suitable for statistical processing of messages and machine learning. See semantic for details.
Custom Properties on custom messages and activities, including cross-process properties (aka baggage). See Adding Properties to Messages and Activities for details.
Hierarchical and Cross-Process Activity ID that can be easily filtered and sorted on to get a logical view of a request in a distributed system. See Logging in a Distributed System for details.
Sampled Logging: Instead of hoarding gigabytes of useless logs, you can now enable logging for selected requests only. See Adjusting Logging Verbosity for details.
Execution time measurement for custom activities. See execution-time for details.
Serilog backend improvements: You now have more control over generated Serilog properties. See IncludedSpecialProperties and LogEventEnricher properties for details.
Application Insights backend improvements: the backend now supports custom properties. See ApplicationInsightsLoggingBackendOptions class for details.
Additionally, PostSharp 6.1 brings the following improvements to logging:
We are now using the type name instead of the role name by default to read the logging level from the backend.
Simplified API to set up verbosity. See DefaultVerbosity for details.
Exception logging is now again implemented in a catch block instead of an exception filter block.
Exception formatting can now be customized by setting the ExceptionFormatter property.
Visual Studio debugger: better support for async methods
We are releasing a complete refactoring of our add-in to the Visual Studio debugger. It solves a dozen of issues and finally fixes the debugging behavior of intercepted async methods.
Support for C# 7.3
PostSharp was affected by the following features of C# 7.3:
Fixing gaps in platform support
PostSharp.Patterns.Caching now supports .NET Standard 2.0 and .NET Framework 4.5.
PostSharp.Patterns.Diagnostics.Backends.CommonLogging now supports .NET Standard 2.0.
Miscelanneous
- Resolved ambiguous method matching in LocationValidationAdvice by adding the Priority property.