Codeunit 8708 Telemetry Loggers, source in 27
Source242526272829metadata in 27
src/System Application/App/Telemetry/src/Logging/TelemetryLoggers.Codeunit.al77 lines, Copyright (c) Microsoft Corporation. MIT
// ------------------------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
// ------------------------------------------------------------------------------------------------
namespace System.Telemetry;
/// <summary>
/// Provides functionality for registering 3d party telemetry loggers to be used with Telemetry codeunit.
/// </summary>
/// <remarks>This codeunit is only intended to be used from subscribers of <see cref="OnRegisterTelemetryLogger"/> event.</remarks>
codeunit 8708 "Telemetry Loggers"
{
Access = Public;
InherentEntitlements = X;
InherentPermissions = X;
var
TelemetryLoggersImpl: Codeunit "Telemetry Loggers Impl.";
/// <summary>
/// Registers a telemetry logger from a 3d party extension. Is used in conjunction with <see cref="OnRegisterTelemetryLogger"/>
/// </summary>
/// <param name="TelemetryLogger">The codeunit implementing the Telemetry Logger inteface from a 3d party extension.</param>
procedure Register(TelemetryLogger: Interface "Telemetry Logger")
var
CallerModuleInfo: ModuleInfo;
begin
NavApp.GetCallerModuleInfo(CallerModuleInfo);
TelemetryLoggersImpl.Register(TelemetryLogger, CallerModuleInfo.Publisher);
end;
/// <summary>
/// Allows 3d party extensions to register their own telemetry loggers to be used with Telemetry codeunit. Is used in conjunction with <see cref="Register"/>.
/// </summary>
/// <example>
/// [EventSubscriber(ObjectType::Codeunit, Codeunit::"Telemetry Loggers", 'OnRegisterTelemetryLogger', '', true, true)]
/// local procedure OnRegisterTelemetryLogger(var Sender: Codeunit "Telemetry Loggers")
/// var
/// MyTelemetryLogger: Codeunit "My Telemetry Logger"; // this codeunit must implement the Telemetry Logger interface
/// begin
/// Sender.Register(MyTelemetryLogger);
/// end;
/// </example>
[IntegrationEvent(true, false)]
internal procedure OnRegisterTelemetryLogger()
begin
end;
/// <summary>
/// Get the telemetry logger from publisher. If there are multiple telemetry loggers registered for the current publisher, a warning is logged.
/// </summary>
internal procedure GetTelemetryLogger(Publisher: Text; var TelemetryLogger: Interface "Telemetry Logger"): Boolean
begin
exit(TelemetryLoggersImpl.GetTelemetryLogger(Publisher, TelemetryLogger));
end;
/// <summary>
/// Gets the relevant telemetry loggers based on the CallerCallStack, doesn't include the ExcludePublisher's logger.
/// </summary>
internal procedure GetRelevantTelemetryLoggers(ExcludePublisher: Text): List of [Interface "Telemetry Logger"]
begin
exit(TelemetryLoggersImpl.GetRelevantTelemetryLoggers(ExcludePublisher));
end;
internal procedure SetCallStackPublishers(Publishers: List of [Text])
begin
TelemetryLoggersImpl.SetCallStackPublishers(Publishers);
end;
internal procedure Register(TelemetryLogger: Interface "Telemetry Logger"; Publisher: Text)
begin
TelemetryLoggersImpl.Register(TelemetryLogger, Publisher);
end;
}