import { GatewayConnection } from '../data/gateway-connection'; import { Rpc } from '../rpc/rpc'; import { LogLevel } from './log-level'; import { LogRecord } from './log-record'; import { TelemetryControlType } from './telemetry-control-type'; import { TelemetryRecord } from './telemetry-record'; /** * Logging class. * @dynamic */ export declare class Logging { private static logMaxRecordLength; private static logMaxWaitTimeMs; private static telemetryMaxRecordLength; private static telemetryMaxWaitTimeMs; private static testMode; private static instance; private static errorLogHeaderStyle; private static warnLogHeaderStyle; private static successLogHeaderStyle; private static infoLogHeaderStyle; private static verboseLogHeaderStyle; private logSubjectServer; private telemetrySubjectServer; private gateway; private http; private rpc; private logSet; private telemetrySet; private thresholdOfLogLevel; private verboseTelemetry; /** * Log a logging event. * * @param record the log record to send the gateway. * @return Promise settle to resolve if buffered. */ static log(record: LogRecord): Promise; /** * Log a critical logging event. * * @param source The record originator of event within a module. * @param message The message of event. * @param params The parameters object which will be serialized. * @return Promise settle to resolve if buffered. */ static logCritical(source: string, message: string, params?: any): Promise; /** * Log an error logging event. * * @param source The record originator of event within a module. * @param message The message of event. * @param params The parameters object which will be serialized. * @return Promise settle to resolve if buffered. */ static logError(source: string, message: string, params?: any): Promise; /** * Log a warning logging event. * * @param source The record originator of event within a module. * @param message The message of event. * @param params The parameters object which will be serialized. * @return Promise settle to resolve if buffered. */ static logWarning(source: string, message: string, params?: any): Promise; /** * Log a success logging event. * * @param source The record originator of event within a module. * @param message The message of event. * @param params The parameters object which will be serialized. * @return Promise settle to resolve if buffered. */ static logSuccess(source: string, message: string, params?: any): Promise; /** * Log a informational logging event. * * @param source The record originator of event within a module. * @param message The message of event. * @param params The parameters object which will be serialized. * @return Promise settle to resolve if buffered. */ static logInformational(source: string, message: string, params?: any): Promise; /** * Log a verbose logging event. * * @param source The record originator of event within a module. * @param message The message of event. * @param params The parameters object which will be serialized. * @return Promise settle to resolve if buffered. */ static logVerbose(source: string, message: string, params?: any): Promise; /** * Log a debug logging event. * * @param source The record originator of event within a module. * @param message The message of event. * @param params The parameters object which will be serialized. * @return Promise settle to resolve if buffered. */ static logDebug(source: string, message: string, params?: any): Promise; /** * Trace a telemetry event. * * @param record the telemetry record to send the gateway. * @return Promise settle to resolve if buffered. */ static trace(record: TelemetryRecord): Promise; /** * Trace a user action telemetry event. * * @param data additional data. * @return Promise settle to resolve if buffered. */ static traceUserAction(data: any): Promise; /** * Trace a telemetry event for a button click. * * @param controlName Describes which control was used. * ex) For a button that says 'Set up' the control name can be 'Set up' to distinguish that from a cancel button. * @param controlId Unique identifier when a control appears more than once. Specific to how implementation handles uniqueness. * @param nodeName the name of the node currently connected to (this.appContextService.activeConnection.nodeName) * @param nodeType the type of node currently connected to (this.appContextService.connectionManager.activeConnection.type) * @return Promise settle to resolve if buffered. */ static traceButton(controlName: string, controlId?: string, nodeName?: string, nodeType?: string): Promise; /** * Trace a telemetry event for a action pane button click. * * @param controlName Describes which control was used. * ex) For a button that says 'Set up' the control name can be 'Set up' to distinguish that from a cancel button. * @param controlId Unique identifier when a control appears more than once. Specific to how implementation handles uniqueness. * @param nodeName the name of the node currently connected to (this.appContextService.activeConnection.nodeName) * @param nodeType the type of node currently connected to (this.appContextService.connectionManager.activeConnection.type) * @return Promise settle to resolve if buffered. */ static traceActionPaneButton(controlName: string, controlId?: string, nodeName?: string, nodeType?: string): Promise; /** * Trace a telemetry event for a action bar button click. * * @param controlName Describes which control was used. * ex) For a button that says 'Set up' the control name can be 'Set up' to distinguish that from a cancel button. * @param controlId Unique identifier when a control appears more than once. Specific to how implementation handles uniqueness. * @param nodeName the name of the node currently connected to (this.appContextService.activeConnection.nodeName) * @param nodeType the type of node currently connected to (this.appContextService.connectionManager.activeConnection.type) * @return Promise settle to resolve if buffered. */ static traceActionBarButton(controlName: string, controlId?: string, nodeName?: string, nodeType?: string): Promise; /** * Trace a telemetry event on a sme control. * * @param controlName Describes which control was used. * ex) For a button that says 'Set up' the control name can be 'Set up' to distinguish that from a cancel button. * @param controlId Unique identifier when a control appears more than once. Specific to how implementation handles uniqueness. * @param additionalData Additional key value pairs that can be sent to telemetry. * @param nodeName the name of the node currently connected to (this.appContextService.activeConnection.nodeName) * @param nodeType the type of node currently connected to (this.appContextService.connectionManager.activeConnection.type) * @return Promise settle to resolve if buffered. */ static traceControl(controlType: TelemetryControlType, controlName: string, controlId?: string, additionalData?: any, nodeName?: string, nodeType?: string): Promise; /** * Trace a telemetry event on click of an external link. * * @param controlName Describes which control was used. * ex) For a button that says 'Set up' the control name can be 'Set up' to distinguish that from a cancel button. * @param url External link that was clicked. * @param controlId Unique identifier when a control appears more than once. Specific to how implementation handles uniqueness. * @param nodeName the name of the node currently connected to (this.appContextService.activeConnection.nodeName) * @param nodeType the type of node currently connected to (this.appContextService.connectionManager.activeConnection.type) * @return Promise settle to resolve if buffered. */ static traceExternalLink(controlName: string, url: string, controlId?: string, nodeName?: string, nodeType?: string): Promise; /** * Trace a telemetry event on click of an internal link. * * @param controlName Describes which control was used. * ex) For a button that says 'Set up' the control name can be 'Set up' to distinguish that from a cancel button. * @param route rpc route. * @param controlId Unique identifier when a control appears more than once. Specific to how implementation handles uniqueness. * @param nodeName the name of the node currently connected to (this.appContextService.activeConnection.nodeName) * @param nodeType the type of node currently connected to (this.appContextService.connectionManager.activeConnection.type) * @return Promise settle to resolve if buffered. */ static traceInternalLink(controlName: string, route: string, controlId?: string, nodeName?: string, nodeType?: string): Promise; /** * Trace a telemetry event when an async task returns. * * @param eventLocation UI location of the event being recorded. * ex) createVmForm, RegisterAadDialog, stopServiceConfirmationDialog... * @param eventLabel Description of what event is being logged. * ex) 'Registered with Azure', 'Added a connection', 'Failed Azure backup' * @param result Result of event. * @param additionalData Additional key value pairs that can be sent to telemetry. * @param nodeName the name of the node currently connected to (this.appContextService.activeConnection.nodeName) * @param nodeType the type of node currently connected to (this.appContextService.connectionManager.activeConnection.type) * @return Promise settle to resolve if buffered. */ static traceAsyncResult(eventLocation: string, eventLabel: string, result: 'Success' | 'Error' | 'Failure', additionalData?: any, nodeName?: string, nodeType?: string): Promise; /** * Log a raw object into the console at debug level of mode. */ static debug(object: any): void; /** * Configure logging mode. * * @param thresholdOfLogLevel the log level for gateway. * @param verboseTelemetry if true, optional telemerty will be collected. */ static configureLog(thresholdOfLogLevel: LogLevel, verboseTelemetry: boolean): void; /** * Wrapper method for tracing a telemetry event for a button click. * * @param controlType Type of button that is being recorded * @param controlName Describes which control was used. * ex) For a button that says 'Set up' the control name can be 'Set up' to distinguish that from a cancel button. * @param controlId Unique identifier when a control appears more than once. Specific to how implementation handles uniqueness. * @param nodeName the name of the node currently connected to (this.appContextService.activeConnection.nodeName) * @param nodeType the type of node currently connected to (this.appContextService.connectionManager.activeConnection.type) * @return Promise settle to resolve if buffered. */ private static traceButtonClick; /** * Format node information for telemetry * * @param nodeName the name of the node currently connected to (this.appContextService.activeConnection.nodeName) * @param nodeType the type of node currently connected to (this.appContextService.connectionManager.activeConnection.type) * @return string */ private static getFormattedNodeId; /** * Gets the level of current logging. */ get consoleLogLevel(): LogLevel; /** * Gets the session Id of shell. */ private get sessionId(); /** * Gets the name of current shell or module. */ private get nameOfModule(); /** * Initializes a new instance of the Logging class. */ constructor(); /** * Gets the current logging instance. */ static get current(): Logging; /** * Flush the regular log set, immediately submitting the logs to the gateway */ static flushLogs(): void; /** * Flush the telemetry log set, immediately submitting the logs to the gateway */ static flushTelemetry(): void; /** * Register Rpc object to logging instance. * * @param rpc the rpc instance. */ registerRpc(rpc: Rpc, gateway: GatewayConnection): void; /** * Dispose the set of rpc forwarding pipes. */ dispose(): void; /** * Log a record. * * @param record the log record. * @return Promise the promise object. */ private logInternal; /** * Log a telemerty record. * * @param record the telemetry record. * @return Promise the promise object. */ private telemetryInternal; /** * Dispose the set. * * @param set the logger set. */ private disposeSet; /** * Log to the gateway. * * @param set the logger set. * @param data the record data. */ private logGateway; /** * Flush a log set, immediately submitting the logs to the gateway */ private flush; /** * Submit records to the gateway. */ private submitRecords; }