elmah.io changelog

New

Unification of Bugster and the AI tab

We have started unification of the following AI features on elmah.io: Bugster and the AI tab (shown when installing the ChatGPT app). As of today, both will be named Bugster and available in the top right corner of the app:

Bugster

You can click the Bugster icon to ask questions about elmah.io, as already known from the previous banner in the left menu and docs.elmah.io. When the ChatGPT app is installed on a log (this will be removed, but more about this later), you can use Bugster to analyze why an error happened and ways to fix it by clicking the new Analyze with Bugster button on the message details:

Analyze with Bugster

This replaces the AI tab and opens the response directly in Bugster instead.

A common request from those of you who already use the ChatGPT app has been to enable this for all logs, rather than having to install an app per log. We are working on moving the configuration of Bugster to the Organization Settings page. Here, you will be able to configure how Bugster should work across all logs, as well as toggle which data Bugster will have access to.

Without additional configuration, Bugster will not have access to any log data. Furthermore, we don’t use your log data for training Bugster.

Keep an eye on this changelog to get notified when the new configuration is rolled out.

New

Send log messages to Azure Service Bus from rules

There’s a new authentication method available on HTTP rules named SharedAccessSignature. When choosing this option, you can generate and input a Shared Access Signature (SAS) for Azure resources like Azure Service Bus, making it possible to send log messages to a queue or similar:

image.png

There’s an example of how to generate a SAS from code available here: https://docs.elmah.io/sending-messages-from-elmah-io-to-azure-service-bus-using-sas-authentication/. For now, you will need to generate a SAS manually and set a long expiration date or update it frequently. If this is something that people are interested in, we might add an app that automates this later on.

New

GPT-4.1 and GPT-4.1 mini available for both OpenAI and elmah.io hosted models

Support for the gpt-4.1 and gpt-4.1-mini models has been added to the ChatGPT app.

OpenAI GPT-4 is now deprecated. If your app is currently using OpenAI GPT-4, it will automatically be upgraded to OpenAI GPT-4.1 in the coming weeks.

image.png

Bootstrap 5 upgrade complete

The upgrade to Bootstrap 5 is done. All pages have been upgraded, alongside a range of other changes like removing jQuery, upgrading JS libraries to the latest versions, and more. We have spent a lot of time testing, but let us know if anything looks or works differently.

Bootstrap 5 upgrade complete

Blogged: Lesser-known C# features that can simplify your code

https://blog.elmah.io/lesser-known-c-features-that-can-simplify-your-code/

Lesser-known C# features that can simplify your code

Discover lesser-known C# features like records, global usings, ref returns, pattern matching, and more to write cleaner, more maintainable code.

New

Bugster now supports source-level questions about elmah.io clients

Bugster, our AI-powered chatbot, now has access to the elmah.io client source code. This improves answers related to client integrations, configuration options, and usage patterns. You can also ask Bugster detailed questions about specific classes and methods in the elmah.io client libraries.

Bugster now knows about elmah.io client source code

New

The Exceptionator - free extension for Visual Studio

We published a new and free extension for Visual Studio: The Exceptionator. The extension contains a set of exception best practice checks and is ready to install from the Visual Studio Marketplace or NuGet.

The Exceptionator - free extension for Visual Studio

Blogged: 16 common mistakes C#/.NET developers make (and how to avoid them)

https://blog.elmah.io/16-common-mistakes-c-net-developers-make-and-how-to-avoid-them/

16 common mistakes C#/.NET developers make (and how to avoid them)

Discover 16 common C#/.NET mistakes. From rethrowing exceptions to using HttpClient. Learn how to fix them with code samples and practical tips.

Blogged: Automate JavaScript scanning with Retire.js in Azure DevOps

https://blog.elmah.io/automate-javascript-scanning-with-retire-js-in-azure-devops/

Automate JavaScript scanning with Retire.js in Azure DevOps

Learn how to scan JavaScript libraries for vulnerabilities using Retire.js and automate detection in CMD or Azure DevOps with a custom extension.

New

Assign access when creating a log

When creating new logs from the dashboard, elmah.io has always assigned the log to all users with the same access level specified for the organization. We have added a new “toggle” on the create log box where you can set the log access to either Everyone or Only me. In scenarios where you, or only a few people, will be the only ones accessing the log, you can click this toggle to avoid having to remove all users after it is created:

Assign access when creating a log

June newsletter

We published a new issue of the elmah.io Newsletter: https://mailchi.mp/elmah/understanding-graphql-in-net-when-and-why-to-use-it-and-more-elmah-io-news

Newsletter

If you want to receive an email every 2-3 months with all of the recent goodies on elmah.io, make sure to subscribe here: http://eepurl.com/dE1hCn

Blogged: IEnumerable vs. IAsyncEnumerable in .NET: Streaming vs. Buffering

https://blog.elmah.io/ienumerable-vs-iasyncenumerable-in-net-streaming-vs-buffering/

IEnumerable vs. IAsyncEnumerable in .NET: Streaming vs. Buffering

Discover the difference between IEnumerable and IAsyncEnumerable in .NET. Learn when to use each with practical examples and perf benchmarks.

Blogged: How to run code coverage of .NET code on Azure DevOps

https://blog.elmah.io/how-to-run-code-coverage-of-net-code-on-azure-devops/

How to run code coverage of .NET code on Azure DevOps

Learn how to measure .NET code coverage on Azure DevOps using XPlat Code Coverage and ReportGenerator. Includes full pipeline and practical tips.

New

Logger information on extended details

If you are using a newer version of the client integrations, your application creates an “Installation” when configuring each logger (more info here). We just released a new tab on the extended message details view when the source of a log message is known. This means you can see which logger originally stored a log message with all of the settings and properties already available on Active installs:

Logger information on extended details

Blogged: Storing JSON data in relational databases using EF Core

https://blog.elmah.io/storing-json-data-in-relational-databases-using-ef-core/

Storing JSON data in relational databases using EF Core

Learn how to store and query JSON data in relational databases using EF Core with real-world examples for PostgreSQL, SQL Server, and MySQL.

New

Security headers check on Uptime Monitoring

A new feature has been added to Uptime Monitoring. Enabling the new Security Headers Check toggle will inspect the response headers returned from your endpoint and validate against well-known security recommendations like adding X-Frame-Options, Content-Security-Policy, and similar headers. Much like the other available check toggles on uptime checks, the feature will log messages in your log, telling you which headers to add if something is missing.

Security headers check on Uptime Monitoring

If you are interested in security headers, the checks implemented in this feature are headers mentioned in this and this blog post.

New

Download request as curl or .http

There are two new features available on the log message details: exporting the request causing a log message to a curl or .http file. The options are available below the new Export button on the right side of the details view (we also moved Copy message here).

Clicking one of the two export options will download a file for either curl or .http capable tools (like Visual Studio and Visual Studio Code). Using these files, you can re-create the request causing an error, including the headers and body used for the original request. This will allow you to inspect failing endpoints from your local machine 🤠

Download request as curl or .http

.http file in Visual Studio

Blogged: Soft deletes in EF Core: How to implement and query efficiently

https://blog.elmah.io/soft-deletes-in-ef-core-how-to-implement-and-query-efficiently/

Soft deletes in EF Core: How to implement and query efficiently

Learn how to implement soft deletes in EF Core using flags, query filters, SaveChanges overrides, and repositories for safer data handling.

Blogged: Common HttpClient tasks you're googling or asking ChatGPT

https://blog.elmah.io/common-httpclient-tasks-youre-googling-or-asking-chatgpt/

Common HttpClient tasks you're googling or asking ChatGPT

Master common HttpClient tasks in .NET. From setting headers, handling JSON and retries. This hopefully helps you and me from Googling next time.

Blogged: 4 real-life examples of using reflection in C#

https://blog.elmah.io/4-real-life-examples-of-using-reflection-in-c/

4 real-life examples of using reflection in C#

Learn how to use C# reflection with real-world examples like CSV export, model mapping, plugin loading, and key tips for better performance.