DST update for EventX Trilogy for Seq now available!
While I was investigating a case where Event Schedule for Seq had duplicate multi-log events occurring, I noticed a Daylight Savings Time issue with the unit tests, which was evident due to an upcoming DST changeover here in Australia.
It was readily apparent, of course, that with their shared DNA, the Event Timeout, Event Threshold, and Event Schedule apps would all have the same issue. There was a mismatch between the evaluation of dates with the difference in time resulting from the DST change.
"Luckily", my NBN connection was down pending a visit from NBN Co, and with relatively poor mobile data speeds in my area, I was able to spend some time on the issue to ensure that the upcoming DST changeover would correctly evaluate times.
As part of the fix, I added a new Dates.ParseInterval and Dates.UtcParseInterval to Lurgle.Dates. These aren't anything too special - they're essentially just a DateTime.ParseExact that simplifies the overall UtcRollover processing.
The aforementioned duplicate multi-log issue turned out to be a result of the logging of events taking greater than the 1 second interval between evaluation, and was readily addressed by adding a flag while logging was occurring.
Event Threshold has also now been updated to include the Handlebars implementation that was previously added to Event Timeout and Event Schedule. This was done fairly quickly as an adjunct part of the bug fixing process, to bring the codebase up to a similar level, but should be functional without regressions. The Handlebars values that can be used for Event Threshold are similar to Event Timeout, and are as follows:
var payload = (IDictionary<string, object>)ToDynamic(new Dictionary<string, object>
{
{ "AppName", config.AppName },
{ "TimeNow", DateTime.Now.ToLongTimeString() },
{ "DateNowLong", DateTime.Now.ToLongDateString() },
{ "DateNowShort", DateTime.Now.ToShortDateString() },
{ "DateTimeNow", DateTime.Now.ToString("F") },
{ "StartTime", counters.StartTime.ToString("F") },
{ "EndTime", counters.EndTime.ToString("F") },
{ "Threshold", config.ThresholdInterval.TotalSeconds },
{ "ThresholdMins", config.ThresholdInterval.TotalMinutes.ToString("N2") },
{ "ThresholdHours", config.ThresholdInterval.TotalHours.ToString("N2") },
{ "RepeatThreshold", config.RepeatThreshold },
{ "SuppressTime", config.SuppressionTime.TotalSeconds },
{ "SuppressTimeMins", config.SuppressionTime.TotalMinutes.ToString("N2") },
{ "SuppressTimeHours", config.SuppressionTime.TotalHours.ToString("N2") },
{ "RepeatSuppressTime", config.SuppressionTime.TotalSeconds },
{ "RepeatSuppressTimeMins", config.RepeatThresholdSuppress.TotalMinutes.ToString("N2") },
{ "RepeatSuppressTimeHours", config.RepeatThresholdSuppress.TotalHours.ToString("N2") },
{ "Tags", string.Join(",", config.Tags) },
{ "Responders", config.Responders ?? "" },
{ "Priority", config.Priority ?? "" },
{ "ProjectKey", config.ProjectKey ?? "" },
{ "DueDate", config.DueDate ?? "" },
{ "InitialTimeEstimate", config.InitialTimeEstimate ?? "" },
{ "RemainingTimeEstimate", config.RemainingTimeEstimate ?? "" }
});
The resulting updates should be live now!
Note - Current builds of Seq have a bug with the Nuget v2 API affecting update of Event Timeout. The workaround is to either manually update Event Timeout to the current build via the Manage page for the app, or change your Nuget feed settings.
Seq.App.EventTimeout | |
---|---|
Seq.App.EventThreshold | |
Seq.App.EventSchedule | |
Lurgle.Dates |
Comments