Fixed certain scenario that could break the event viewer
This commit is contained in:
@@ -26,12 +26,12 @@ public sealed class PerformanceCollectorService : IHostedService
|
||||
{
|
||||
if (!_lightlessConfigService.Current.LogPerformance) return func.Invoke();
|
||||
|
||||
string cn = sender.GetType().Name + _counterSplit + counterName.BuildMessage();
|
||||
var owner = sender.GetType().Name;
|
||||
var counter = counterName.BuildMessage();
|
||||
var cn = string.Concat(owner, _counterSplit, counter);
|
||||
|
||||
if (!PerformanceCounters.TryGetValue(cn, out var list))
|
||||
{
|
||||
list = PerformanceCounters[cn] = new(maxEntries);
|
||||
}
|
||||
|
||||
var dt = DateTime.UtcNow.Ticks;
|
||||
try
|
||||
@@ -53,12 +53,12 @@ public sealed class PerformanceCollectorService : IHostedService
|
||||
{
|
||||
if (!_lightlessConfigService.Current.LogPerformance) { act.Invoke(); return; }
|
||||
|
||||
var cn = sender.GetType().Name + _counterSplit + counterName.BuildMessage();
|
||||
var owner = sender.GetType().Name;
|
||||
var counter = counterName.BuildMessage();
|
||||
var cn = string.Concat(owner, _counterSplit, counter);
|
||||
|
||||
if (!PerformanceCounters.TryGetValue(cn, out var list))
|
||||
{
|
||||
list = PerformanceCounters[cn] = new(maxEntries);
|
||||
}
|
||||
|
||||
var dt = DateTime.UtcNow.Ticks;
|
||||
try
|
||||
@@ -72,7 +72,7 @@ public sealed class PerformanceCollectorService : IHostedService
|
||||
if (TimeSpan.FromTicks(elapsed) > TimeSpan.FromMilliseconds(10))
|
||||
_logger.LogWarning(">10ms spike on {counterName}: {time}", cn, TimeSpan.FromTicks(elapsed));
|
||||
#endif
|
||||
list.Add(new(TimeOnly.FromDateTime(DateTime.Now), elapsed));
|
||||
list.Add((TimeOnly.FromDateTime(DateTime.Now), elapsed));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -121,11 +121,11 @@ public sealed class PerformanceCollectorService : IHostedService
|
||||
sb.Append('|');
|
||||
sb.Append("-Counter Name".PadRight(longestCounterName, '-'));
|
||||
sb.AppendLine();
|
||||
var orderedData = data.OrderBy(k => k.Key, StringComparer.OrdinalIgnoreCase).ToList();
|
||||
var previousCaller = orderedData[0].Key.Split(_counterSplit, StringSplitOptions.RemoveEmptyEntries)[0];
|
||||
var orderedData = data.OrderBy(k => k.Key, StringComparer.OrdinalIgnoreCase).ToList();
|
||||
var previousCaller = SplitCounterKey(orderedData[0].Key).Owner;
|
||||
foreach (var entry in orderedData)
|
||||
{
|
||||
var newCaller = entry.Key.Split(_counterSplit, StringSplitOptions.RemoveEmptyEntries)[0];
|
||||
var newCaller = SplitCounterKey(entry.Key).Owner;
|
||||
if (!string.Equals(previousCaller, newCaller, StringComparison.Ordinal))
|
||||
{
|
||||
DrawSeparator(sb, longestCounterName);
|
||||
@@ -157,6 +157,12 @@ public sealed class PerformanceCollectorService : IHostedService
|
||||
_logger.LogInformation("{perf}", sb.ToString());
|
||||
}
|
||||
|
||||
private static (string Owner, string Counter) SplitCounterKey(string cn)
|
||||
{
|
||||
var parts = cn.Split(_counterSplit, 2, StringSplitOptions.None);
|
||||
return (parts[0], parts.Length > 1 ? parts[1] : string.Empty);
|
||||
}
|
||||
|
||||
private static void DrawSeparator(StringBuilder sb, int longestCounterName)
|
||||
{
|
||||
sb.Append("".PadRight(15, '-'));
|
||||
|
||||
Reference in New Issue
Block a user