// Copyright Epic Games, Inc. All Rights Reserved. using System.Collections.Generic; using Microsoft.Extensions.Logging; namespace EpicGames.Horde.Issues.Handlers { /// /// Default handler for log events not matched by any other handler /// [IssueHandler] public class DefaultIssueHandler : IssueHandler { readonly IssueHandlerContext _context; IssueEventGroup? _issue; /// public override int Priority => 0; /// /// Constructor /// public DefaultIssueHandler(IssueHandlerContext context) => _context = context; /// public override bool HandleEvent(IssueEvent issueEvent) { if (_issue == null) { _issue = new IssueEventGroup("Default", "{Severity} in {Meta:Node}", IssueChangeFilter.All); _issue.Metadata.Add("Node", _context.NodeName); _issue.Keys.Add(IssueKey.FromStep(_context.StreamId, _context.TemplateId, _context.NodeName)); issueEvent.AuditLogger?.LogDebug("Fingerprint key: '{Key}' generated from event: '{Event}'", IssueKey.FromStep(_context.StreamId, _context.TemplateId, _context.NodeName), issueEvent.Render()); } _issue.Events.Add(issueEvent); return true; } /// public override IEnumerable GetIssues() { if (_issue != null) { yield return _issue; } } } }