Browse Source

Refactor telemetry system to use ActivityEvent instead of ActivityData, updating related interfaces and implementations for improved consistency and functionality.

pull/23059/head
Emre KARA 1 year ago
parent
commit
a98411e4f2
  1. 8
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/TelemetryApplicationMetricsContributor.cs
  2. 4
      framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/TelemetryPermissionInfoContributor.cs
  3. 32
      framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/ActivityDataExtensions.cs
  4. 8
      framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/ActivityEvent.cs
  5. 2
      framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Contracts/ITelemetryActivityDataBuilder.cs
  6. 2
      framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Contracts/ITelemetryActivityDataEnricher.cs
  7. 4
      framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Contracts/ITelemetryActivityStorage.cs
  8. 2
      framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Providers/TelemetryActivityDataBuilder.cs
  9. 6
      framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Providers/TelemetryApplicationInfoEnricher.cs
  10. 6
      framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Providers/TelemetryDeviceInfoEnricher.cs
  11. 16
      framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Providers/TelemetrySolutionInfoEnricher.cs
  12. 6
      framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Storage/TelemetryActivityStorage.cs
  13. 2
      framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Storage/TelemetryActivityStorageState.cs
  14. 2
      framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/ITelemetryApplicationInfoContributor.cs
  15. 8
      framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/ITelemetryService.cs
  16. 2
      framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/ITelemetrySessionProvider.cs
  17. 8
      framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/TelemetryModuleInfoContributor.cs
  18. 2
      framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/TelemetryRuntimeSessionProvider.cs
  19. 31
      framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/TelemetryService.cs
  20. 6
      framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Telemetry/TelemetryDomainInfoContributor.cs

8
framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/TelemetryApplicationMetricsContributor.cs

@ -12,9 +12,9 @@ namespace Volo.Abp.AspNetCore.Mvc;
[ExposeServices(typeof(ITelemetryApplicationInfoContributor))]
public class TelemetryApplicationMetricsContributor : ITelemetryApplicationInfoContributor, ISingletonDependency
{
public Task ContributeAsync(ActivityData activityData)
public Task ContributeAsync(ActivityEvent activityEvent)
{
if (activityData.TryGetValue(ActivityPropertyNames.Assembly, out var assemblyPath))
if (activityEvent.TryGetValue(ActivityPropertyNames.Assembly, out var assemblyPath))
{
var assembly = Assembly.LoadFrom((string)assemblyPath);
var types = assembly.GetTypes();
@ -27,8 +27,8 @@ public class TelemetryApplicationMetricsContributor : ITelemetryApplicationInfoC
typeof(AbpController).IsAssignableFrom(t) &&
!t.IsAbstract);
activityData[ActivityPropertyNames.AppServiceCount] = appServiceCount;
activityData[ActivityPropertyNames.ControllerCount] = controllerCount;
activityEvent[ActivityPropertyNames.AppServiceCount] = appServiceCount;
activityEvent[ActivityPropertyNames.ControllerCount] = controllerCount;
}
return Task.CompletedTask;
}

4
framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/TelemetryPermissionInfoContributor.cs

@ -16,9 +16,9 @@ public class TelemetryPermissionInfoContributor : ITelemetryApplicationInfoContr
_permissionDefinitionManager = permissionDefinitionManager;
}
public async Task ContributeAsync(ActivityData activityData)
public async Task ContributeAsync(ActivityEvent activityEvent)
{
var permissions = await _permissionDefinitionManager.GetPermissionsAsync();
activityData[ActivityPropertyNames.PermissionCount] = permissions.Count;
activityEvent[ActivityPropertyNames.PermissionCount] = permissions.Count;
}
}

32
framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/ActivityDataExtensions.cs

@ -4,46 +4,46 @@ namespace Volo.Abp.Telemetry.Activity;
public static class ActivityDataExtensions
{
public static ActivityData WithAdditionalProperty(this ActivityData activityData, string key, object value)
public static ActivityEvent WithAdditionalProperty(this ActivityEvent activityEvent, string key, object value)
{
activityData.AdditionalProperties ??= new Dictionary<string, object>();
activityData.AdditionalProperties[key] = value;
return activityData;
activityEvent.AdditionalProperties ??= new Dictionary<string, object>();
activityEvent.AdditionalProperties[key] = value;
return activityEvent;
}
public static ActivityData WithAdditionalProperties(this ActivityData activityData, Dictionary<string, object> properties)
public static ActivityEvent WithAdditionalProperties(this ActivityEvent activityEvent, Dictionary<string, object> properties)
{
activityData.AdditionalProperties ??= new Dictionary<string, object>();
activityEvent.AdditionalProperties ??= new Dictionary<string, object>();
foreach (var property in properties)
{
activityData.AdditionalProperties[property.Key] = property.Value;
activityEvent.AdditionalProperties[property.Key] = property.Value;
}
return activityData;
return activityEvent;
}
public static ActivityData WithAdditionalProperties(this ActivityData activityData, params (string key, object value)[] properties)
public static ActivityEvent WithAdditionalProperties(this ActivityEvent activityEvent, params (string key, object value)[] properties)
{
activityData.AdditionalProperties ??= new Dictionary<string, object>();
activityEvent.AdditionalProperties ??= new Dictionary<string, object>();
foreach (var (key, value) in properties)
{
activityData.AdditionalProperties[key] = value;
activityEvent.AdditionalProperties[key] = value;
}
return activityData;
return activityEvent;
}
public static ActivityData WithAdditionalProperties(this ActivityData activityData, object properties)
public static ActivityEvent WithAdditionalProperties(this ActivityEvent activityEvent, object properties)
{
activityData.AdditionalProperties ??= new Dictionary<string, object>();
activityEvent.AdditionalProperties ??= new Dictionary<string, object>();
foreach (var property in properties.GetType().GetProperties())
{
var value = property.GetValue(properties);
if (value != null)
{
activityData.AdditionalProperties[property.Name] = value;
activityEvent.AdditionalProperties[property.Name] = value;
}
}
return activityData;
return activityEvent;
}
}

8
framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/ActivityData.cs → framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/ActivityEvent.cs

@ -3,9 +3,13 @@ using System.Collections.Generic;
namespace Volo.Abp.Telemetry.Activity;
public class ActivityData : Dictionary<string, object>
public class ActivityEvent : Dictionary<string, object>
{
public ActivityData(string activityName, string? details = null)
private ActivityEvent()
{
}
public ActivityEvent(string activityName, string? details = null)
{
if (activityName.IsNullOrWhiteSpace())
{

2
framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Contracts/ITelemetryActivityDataBuilder.cs

@ -4,5 +4,5 @@ namespace Volo.Abp.Telemetry.Activity.Contracts;
public interface ITelemetryActivityDataBuilder
{
Task BuildAsync(ActivityData activity);
Task BuildAsync(ActivityEvent activity);
}

2
framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Contracts/ITelemetryActivityDataEnricher.cs

@ -4,5 +4,5 @@ namespace Volo.Abp.Telemetry.Activity.Contracts;
public interface ITelemetryActivityDataEnricher
{
Task EnrichAsync(ActivityData activity);
Task EnrichAsync(ActivityEvent activity);
}

4
framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Contracts/ITelemetryActivityStorage.cs

@ -11,8 +11,8 @@ public interface ITelemetryActivityStorage
Task MarkDeviceInfoAsAddedAsync();
Task MarkSolutionInfoAsAddedAsync(Guid solutionId);
Task MarkApplicationInfoAsAddedAsync(Guid applicationInfo);
Task BufferActivityAsync(ActivityData activityData);
Task<List<ActivityData>> GetBufferedActivitiesAsync();
Task BufferActivityAsync(ActivityEvent activityEvent);
Task<List<ActivityEvent>> GetBufferedActivitiesAsync();
Task EndSessionAsync();
Task<bool> ShouldAddDeviceInfoAsync();
Task<bool> ShouldAddSolutionInformation(Guid solutionId);

2
framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Providers/TelemetryActivityDataBuilder.cs

@ -16,7 +16,7 @@ public class TelemetryActivityDataBuilder : ITelemetryActivityDataBuilder, ISing
_serviceProvider = serviceProvider;
}
public virtual async Task BuildAsync(ActivityData activity)
public virtual async Task BuildAsync(ActivityEvent activity)
{
var sessionProvider = _serviceProvider.GetRequiredService<ITelemetrySessionProvider>();

6
framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Providers/TelemetryApplicationInfoEnricher.cs

@ -22,7 +22,7 @@ public class TelemetryApplicationInfoEnricher : ITelemetryActivityDataEnricher,
_telemetryActivityStorage = telemetryActivityStorage;
}
public async Task EnrichAsync(ActivityData activity)
public async Task EnrichAsync(ActivityEvent activity)
{
if (!ShouldEnrichActivity(activity))
{
@ -57,7 +57,7 @@ public class TelemetryApplicationInfoEnricher : ITelemetryActivityDataEnricher,
}
}
private bool ShouldEnrichActivity(ActivityData activity)
private bool ShouldEnrichActivity(ActivityEvent activity)
{
return activity.ContainsKey(ActivityPropertyNames.Assembly)
&& activity.TryGetValue(ActivityPropertyNames.SessionType, out var sessionTypeObj)
@ -65,7 +65,7 @@ public class TelemetryApplicationInfoEnricher : ITelemetryActivityDataEnricher,
&& parsed == SessionType.ApplicationRuntime;
}
private static Guid? ExtractProjectId(ActivityData activity)
private static Guid? ExtractProjectId(ActivityEvent activity)
{
if (!activity.TryGetValue(ActivityPropertyNames.ProjectId, out var projectIdObj) ||
projectIdObj is not string projectIdStr ||

6
framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Providers/TelemetryDeviceInfoEnricher.cs

@ -30,7 +30,7 @@ public class TelemetryDeviceInfoEnricher : ITelemetryActivityDataEnricher, ISing
_deviceId = new Lazy<Guid?>(GetDeviceId);
}
public async Task EnrichAsync(ActivityData activity)
public async Task EnrichAsync(ActivityEvent activity)
{
if (_deviceId.Value.HasValue)
{
@ -48,7 +48,7 @@ public class TelemetryDeviceInfoEnricher : ITelemetryActivityDataEnricher, ISing
await _telemetryActivityStorage.MarkDeviceInfoAsAddedAsync();
}
private void EnrichWithDeviceInfo(ActivityData activity)
private void EnrichWithDeviceInfo(ActivityEvent activity)
{
activity[ActivityPropertyNames.DeviceType] = GetDeviceType();
activity[ActivityPropertyNames.DeviceLanguage] = GetLanguage();
@ -56,7 +56,7 @@ public class TelemetryDeviceInfoEnricher : ITelemetryActivityDataEnricher, ISing
activity[ActivityPropertyNames.CountryIsoCode] = GetCountry();
}
private async Task EnrichWithSoftwareInfoAsync(ActivityData activity)
private async Task EnrichWithSoftwareInfoAsync(ActivityEvent activity)
{
var softwareList = await _softwareInfoProvider.GetSoftwareInfoAsync();
activity[ActivityPropertyNames.InstalledSoftwares] = softwareList;

16
framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Providers/TelemetrySolutionInfoEnricher.cs

@ -24,7 +24,7 @@ public class TelemetrySolutionInfoEnricher : ITelemetryActivityDataEnricher, ISi
public async Task EnrichAsync(ActivityData activity)
public async Task EnrichAsync(ActivityEvent activity)
{
var solutionId = GetSolutionId(activity);
if (solutionId.HasValue)
@ -40,7 +40,7 @@ public class TelemetrySolutionInfoEnricher : ITelemetryActivityDataEnricher, ISi
}
}
private Guid? GetSolutionId(ActivityData activity)
private Guid? GetSolutionId(ActivityEvent activity)
{
if (TryGetSolutionIdFromActivity(activity, out var solutionId))
{
@ -55,11 +55,11 @@ public class TelemetrySolutionInfoEnricher : ITelemetryActivityDataEnricher, ISi
return null;
}
private async Task FillSolutionInfoAsync(ActivityData activityData)
private async Task FillSolutionInfoAsync(ActivityEvent activityEvent)
{
try
{
if (!activityData.TryGetValue(ActivityPropertyNames.SolutionPath, out var rawSolutionPath)
if (!activityEvent.TryGetValue(ActivityPropertyNames.SolutionPath, out var rawSolutionPath)
|| string.IsNullOrWhiteSpace(rawSolutionPath?.ToString())
|| !File.Exists(rawSolutionPath?.ToString()))
{
@ -77,13 +77,13 @@ public class TelemetrySolutionInfoEnricher : ITelemetryActivityDataEnricher, ISi
using var doc = JsonDocument.Parse(jsonContent);
var root = doc.RootElement;
AddSolutionInformation(activityData, root.GetProperty("creatingStudioConfiguration"));
AddSolutionInformation(activityEvent, root.GetProperty("creatingStudioConfiguration"));
if (root.TryGetProperty("modules", out var modulesElement) &&
modulesElement.ValueKind == JsonValueKind.Object)
{
var directoryPath = Path.GetDirectoryName(solutionPath)!;
activityData[ActivityPropertyNames.InstalledModules] = ExtractModules(directoryPath, modulesElement);
activityEvent[ActivityPropertyNames.InstalledModules] = ExtractModules(directoryPath, modulesElement);
}
}
catch
@ -92,7 +92,7 @@ public class TelemetrySolutionInfoEnricher : ITelemetryActivityDataEnricher, ISi
}
}
private bool TryGetSolutionIdFromActivity(ActivityData activity, out Guid solutionId)
private bool TryGetSolutionIdFromActivity(ActivityEvent activity, out Guid solutionId)
{
solutionId = Guid.Empty;
@ -106,7 +106,7 @@ public class TelemetrySolutionInfoEnricher : ITelemetryActivityDataEnricher, ISi
return false;
}
private bool TryGetSolutionIdFromFile(ActivityData activity, out Guid solutionId)
private bool TryGetSolutionIdFromFile(ActivityEvent activity, out Guid solutionId)
{
solutionId = Guid.Empty;

6
framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Storage/TelemetryActivityStorage.cs

@ -28,15 +28,15 @@ public class TelemetryActivityStorage : ITelemetryActivityStorage, ISingletonDep
_activitySendPeriod = isTestMode ? TimeSpan.FromSeconds(5) : TimeSpan.FromDays(1);
}
public async Task BufferActivityAsync(ActivityData activityData)
public async Task BufferActivityAsync(ActivityEvent activityEvent)
{
await ModifyStateAsync(state =>
{
state.Activities.Insert(0, activityData);
state.Activities.Insert(0, activityEvent);
});
}
public async Task<List<ActivityData>> GetBufferedActivitiesAsync()
public async Task<List<ActivityEvent>> GetBufferedActivitiesAsync()
{
var state = await GetStateAsync();
return state.Activities;

2
framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Storage/TelemetryActivityStorageState.cs

@ -8,7 +8,7 @@ public class TelemetryActivityStorageState
public DateTimeOffset? ActivitySendTime { get; set; }
public DateTimeOffset? LastDeviceInfoAddTime { get; set; }
public Guid? SessionId { get; set; }
public List<ActivityData> Activities { get; set; } = new();
public List<ActivityEvent> Activities { get; set; } = new();
public Dictionary<Guid,DateTimeOffset> Solutions { get; set; } = new();
public Dictionary<Guid, DateTimeOffset> Applications { get; set; } = new();

2
framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/ITelemetryApplicationInfoContributor.cs

@ -5,5 +5,5 @@ namespace Volo.Abp.Telemetry;
public interface ITelemetryApplicationInfoContributor
{
Task ContributeAsync(ActivityData activityData);
Task ContributeAsync(ActivityEvent activityEvent);
}

8
framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/ITelemetryService.cs

@ -8,11 +8,11 @@ namespace Volo.Abp.Telemetry;
public interface ITelemetryService
{
IAsyncDisposable TrackActivity(string activityName, Action<ActivityData>? configure = null);
IAsyncDisposable TrackActivity(ActivityData activityData);
Task AddActivityAsync(ActivityData data);
IAsyncDisposable TrackActivity(string activityName, Action<ActivityEvent>? configure = null);
IAsyncDisposable TrackActivity(ActivityEvent activityEvent);
Task AddActivityAsync(ActivityEvent @event);
Task AddActivityAsync(string activityName, string? details = null);
Task AddActivityAsync(string activityName, Action<ActivityData> configure);
Task AddActivityAsync(string activityName, Action<ActivityEvent> configure);
Task AddErrorActivityAsync(Action<Dictionary<string, object>> configure);
Task AddErrorActivityAsync(string errorMessage);
Task AddErrorForActivityAsync(string failingActivity, string errorMessage);

2
framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/ITelemetrySessionProvider.cs

@ -5,5 +5,5 @@ namespace Volo.Abp.Telemetry;
public interface ITelemetrySessionProvider
{
Task AddSessionInfoAsync(ActivityData activity);
Task AddSessionInfoAsync(ActivityEvent activity);
}

8
framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/TelemetryModuleInfoContributor.cs

@ -11,17 +11,17 @@ namespace Volo.Abp.Telemetry;
[ExposeServices(typeof(ITelemetryApplicationInfoContributor))]
public class TelemetryModuleInfoContributor : ITelemetryApplicationInfoContributor, ISingletonDependency
{
public Task ContributeAsync(ActivityData activityData)
public Task ContributeAsync(ActivityEvent activityEvent)
{
if (activityData.TryGetValue(ActivityPropertyNames.Assembly, out var assemblyPath))
if (activityEvent.TryGetValue(ActivityPropertyNames.Assembly, out var assemblyPath))
{
var assembly = Assembly.LoadFrom((string)assemblyPath);
var types = assembly.GetTypes();
var moduleCount = types.Count(t => typeof(AbpModule).IsAssignableFrom(t) && !t.IsAbstract);
var projectCount = types.Select(t => t.Assembly.GetName().Name).Distinct().Count();
activityData[ActivityPropertyNames.ModuleCount] = moduleCount;
activityData[ActivityPropertyNames.ProjectCount] = projectCount;
activityEvent[ActivityPropertyNames.ModuleCount] = moduleCount;
activityEvent[ActivityPropertyNames.ProjectCount] = projectCount;
}
return Task.CompletedTask;

2
framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/TelemetryRuntimeSessionProvider.cs

@ -11,7 +11,7 @@ namespace Volo.Abp.Telemetry;
[ExposeServices(typeof(ITelemetrySessionProvider))]
public class TelemetryRuntimeSessionProvider : ITelemetrySessionProvider, ISingletonDependency
{
public Task AddSessionInfoAsync(ActivityData activity)
public Task AddSessionInfoAsync(ActivityEvent activity)
{
activity[ActivityPropertyNames.SessionType] = SessionType.ApplicationRuntime;
activity[ActivityPropertyNames.SessionId] = Guid.NewGuid();

31
framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/TelemetryService.cs

@ -6,6 +6,7 @@ using Volo.Abp.DependencyInjection;
using Volo.Abp.Telemetry.Activity;
using Volo.Abp.Telemetry.Activity.Contracts;
using Volo.Abp.Telemetry.Constants;
using ActivityEvent = Volo.Abp.Telemetry.Activity.ActivityEvent;
namespace Volo.Abp.Telemetry;
@ -23,11 +24,11 @@ public class TelemetryService : ITelemetryService, ISingletonDependency
_telemetryActivityDataBuilder = telemetryActivityDataBuilder;
}
public IAsyncDisposable TrackActivity(string activityName, Action<ActivityData>? configure = null)
public IAsyncDisposable TrackActivity(string activityName, Action<ActivityEvent>? configure = null)
{
Check.NotNullOrEmpty(activityName, nameof(activityName));
var stopwatch = Stopwatch.StartNew();
var activityData = new ActivityData(activityName);
var activityData = new ActivityEvent(activityName);
configure?.Invoke(activityData);
@ -40,30 +41,30 @@ public class TelemetryService : ITelemetryService, ISingletonDependency
});
}
public IAsyncDisposable TrackActivity(ActivityData activityData)
public IAsyncDisposable TrackActivity(ActivityEvent activityEvent)
{
var stopwatch = Stopwatch.StartNew();
return new AsyncDisposeFunc(async () =>
{
stopwatch.Stop();
activityData.ActivityDuration = stopwatch.ElapsedMilliseconds;
await AddActivityAsync(activityData);
activityEvent.ActivityDuration = stopwatch.ElapsedMilliseconds;
await AddActivityAsync(activityEvent);
});
}
public Task AddActivityAsync(ActivityData data)
public Task AddActivityAsync(ActivityEvent @event)
{
_ = Task.Run(async () =>
{
try
{
await _telemetryActivityDataBuilder.BuildAsync(data);
await _telemetryActivityStorage.BufferActivityAsync(data);
await _telemetryActivityDataBuilder.BuildAsync(@event);
await _telemetryActivityStorage.BufferActivityAsync(@event);
if (data.ActivityName == ActivityNameConsts.AbpStudioClose)
if (@event.ActivityName == ActivityNameConsts.AbpStudioClose)
{
await _telemetryActivityStorage.EndSessionAsync();
}
@ -84,13 +85,13 @@ public class TelemetryService : ITelemetryService, ISingletonDependency
public async Task AddActivityAsync(string activityName, string? details = null)
{
await AddActivityAsync(new ActivityData(activityName, details));
await AddActivityAsync(new ActivityEvent(activityName, details));
}
public async Task AddActivityAsync(string activityName, Action<ActivityData> configure)
public async Task AddActivityAsync(string activityName, Action<ActivityEvent> configure)
{
Check.NotNullOrEmpty(activityName, nameof(activityName));
var activityData = new ActivityData(activityName);
var activityData = new ActivityEvent(activityName);
configure?.Invoke(activityData);
@ -99,7 +100,7 @@ public class TelemetryService : ITelemetryService, ISingletonDependency
public async Task AddErrorActivityAsync(Action<Dictionary<string, object>> configure)
{
var activityData = new ActivityData(ActivityNameConsts.Error)
var activityData = new ActivityEvent(ActivityNameConsts.Error)
{
AdditionalProperties = new Dictionary<string, object>()
};
@ -111,7 +112,7 @@ public class TelemetryService : ITelemetryService, ISingletonDependency
public async Task AddErrorActivityAsync(string errorMessage)
{
var activityData = new ActivityData(ActivityNameConsts.Error)
var activityData = new ActivityEvent(ActivityNameConsts.Error)
{
AdditionalProperties = new Dictionary<string, object>
{
@ -124,7 +125,7 @@ public class TelemetryService : ITelemetryService, ISingletonDependency
public async Task AddErrorForActivityAsync(string failingActivity, string errorMessage)
{
var activityData = new ActivityData(ActivityNameConsts.Error)
var activityData = new ActivityEvent(ActivityNameConsts.Error)
{
AdditionalProperties = new Dictionary<string, object>
{

6
framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Telemetry/TelemetryDomainInfoContributor.cs

@ -12,15 +12,15 @@ namespace Volo.Abp.Domain.Telemetry;
[ExposeServices(typeof(ITelemetryApplicationInfoContributor))]
public class TelemetryDomainInfoContributor : ITelemetryApplicationInfoContributor , ISingletonDependency
{
public Task ContributeAsync(ActivityData activityData)
public Task ContributeAsync(ActivityEvent activityEvent)
{
if (activityData.TryGetValue(ActivityPropertyNames.Assembly, out var assemblyPath))
if (activityEvent.TryGetValue(ActivityPropertyNames.Assembly, out var assemblyPath))
{
var assembly = Assembly.LoadFrom((string)assemblyPath);
var entityCount = assembly.GetTypes().Count(t => typeof(IEntity).IsAssignableFrom(t) && !t.IsAbstract);
activityData[ActivityPropertyNames.EntityCount] = entityCount;
activityEvent[ActivityPropertyNames.EntityCount] = entityCount;
}
return Task.CompletedTask;

Loading…
Cancel
Save