4.2.280-pre introduces signal groups, a huge improvement to how signals are organized and combined to produce a filtered view of the log stream.
What problems are we out to solve?
Signals encapsulate a set of filters that can then be quickly applied together. It's common to create signals for different apps, environments, logging levels, event types and other high-level dimensions to simplify navigating through logs.
The signal bar is the right-hand panel in the Seq events screen that lists available signals. Selecting a signal in the signal bar causes its filter to be applied, and selecting multiple signals like Errors and Production narrows down the stream further, to show errors in the Production environment, for example.
There are two limitations in today's signal bar that we want to overcome:
- Signals build up, leading to a lack of screen real-estate
- Signals that select different values for the same property can't be combined meaningfully
The first problem becomes evident the more Seq is used: it's not uncommon to see a dozen signals, all with names like App: Customer Portal, App: Marketing, App: Ordering all stacked up together in the signal bar.
The second problem is a little bit more subtle. In Seq 4.1, Signals with filters like
Application = 'Customer Portal' never produce results when combined with other signals based on values of the same property, for example,
Application = 'Marketing':
Application = 'Customer Portal' and Application = 'Marketing'
The default method of composing signals with logical
and doesn't make much sense in these cases. If we've already created signals for Marketing and Customer Portal, it should be easy to show events from both sets. We're never interested in finding events that match both!
How do signal groups help?
In Seq 4.2, signals that select different values of the same property will be automatically grouped up together under that property name.
Selecting signals within a group is additive: behind the scenes, the filters encapsulated by the signal will be combined using logical
Application = 'Customer Portal' or Application = 'Marketing'
Groups of signals can be expanded or collapsed by clicking on the group header. In the sample of customer data we've seen, "property selector" signals make up a substantial proportion of the items in the signal bar, so we expect this will make a noticeable impact on how much screen real-estate is required.
Organizing signals into groups
The default grouping simply looks for signals with a single
Property = value filter. This strategy makes it easier to migrate large existing Seq installations to the new layout, and also makes the feature more discoverable for new users. It won't always find the optimal grouping, though.
To manually configure grouping for a signal, click the edit pencil next to the signal name. At the bottom of the signal details, you'll find the new Group heading:
The three options are:
- Automatic - group based on the property name in a
Property = valuefilter, if there is organized
- Disabled - don't group the signal, even if an automatic grouping is inferred
- Specify - choose the group name manually
Signal groups turned out to be a much deeper, more fundamental feature than we'd initially expected. We're really happy with how things came out! If you have the opportunity to try the new preview, you can find it at the bottom of the Seq downloads page:
We'd love to hear your impressions and feedback, here or via the Seq issue tracker on GitHub.