import { ERROR_CODE } from './ErrorCode'; import { LOG_LEVEL } from './LogLevel'; import { LogObj } from './LogObj'; import { LOG_SOURCE } from './LogSource'; import { ILoggerConfiguration } from '../models/LoggerConfiguration'; /** * Abstract Class for AMC Logger objects. Implementations of this interface report * DaVinci App logs through various methods and mediums. * * @export * @abstract * @class AbstractLogger */ export declare abstract class AbstractLogger { static tabId: string; config: ILoggerConfiguration; protected timerId: number; protected static ApiServiceUrl: string; protected _isDev: boolean; protected _logLevel: LOG_LEVEL; protected _logSource: string; get logLevel(): LOG_LEVEL; set logLevel(logLevel: LOG_LEVEL); get logSource(): LOG_SOURCE | string; set logSource(logSourceIn: LOG_SOURCE | string); get apiUrl(): string; set apiUrl(apiUrl: string); get isDev(): boolean; set isDev(isDev: boolean); /** * Creates an instance of AbstractLogger. * @param {(LOG_SOURCE | string)} logSource Name of DaVinci App which owns this Logger instance * @param {boolean} [isDev=false] True if developer mode should be enabled (behavior dependent on implementation) * @param {string} [apiUrl=null] URL of DaVinci API. Required to retrieve configured log level * @memberof AbstractLogger */ constructor(logSource: LOG_SOURCE | string, isDev?: boolean, apiUrl?: string); abstract setConfiguration(config: ILoggerConfiguration): void; /** * Create a LOOP log * * @abstract * @param {string} message Content of log record * @param {ERROR_CODE} errorCode Error classification * @param {Date} localTime Local time when log record was generated * @memberof AbstractLogger */ abstract logLoop(message: string, errorCode?: ERROR_CODE, localTime?: Date): void; /** * Create a TRACE log * * @abstract * @param {string} message Content of log record * @param {ERROR_CODE} errorCode Error classification * @param {Date} localTime Local time when log record was generated * @memberof AbstractLogger */ abstract logTrace(message: string, errorCode?: ERROR_CODE, localTime?: Date): void; /** * Create a DEBUG log * * @abstract * @param {string} message Content of log record * @param {ERROR_CODE} errorCode Error classification * @param {Date} localTime Local time when log record was generated * @memberof AbstractLogger */ abstract logDebug(message: string, errorCode?: ERROR_CODE, localTime?: Date): void; /** * Create an INFORMATION log * * @abstract * @param {string} message Content of log record * @param {ERROR_CODE} errorCode Error classification * @param {Date} localTime Local time when log record was generated * @memberof AbstractLogger */ abstract logInformation(message: string, errorCode?: ERROR_CODE, localTime?: Date): void; /** * Create a WARNING log * * @abstract * @param {string} message Content of log record * @param {ERROR_CODE} errorCode Error classification * @param {Date} localTime Local time when log record was generated * @memberof AbstractLogger */ abstract logWarning(message: string, errorCode?: ERROR_CODE, localTime?: Date): void; /** * Create an ERROR log * * @abstract * @param {string} message Content of log record * @param {ERROR_CODE} errorCode Error classification * @param {Date} localTime Local time when log record was generated * @memberof AbstractLogger */ abstract logError(message: string, errorCode?: ERROR_CODE, localTime?: Date): void; /** * Create a CRITICAL log. Deprecated, behaves the same as logCritical() * * @deprecated * @param {string} message Content of log record * @param {ERROR_CODE} errorCode Error classification * @param {Date} localTime Local time when log record was generated * @memberof AbstractLogger */ logCriticial(message: string, errorCode?: ERROR_CODE, localTime?: Date): void; /** * Create a CRITICAL log * * @abstract * @param {string} message Content of log record * @param {ERROR_CODE} errorCode Error classification * @param {Date} localTime Local time when log record was generated * @memberof AbstractLogger */ abstract logCritical(message: string, errorCode?: ERROR_CODE, localTime?: Date): void; /** * Push logs if any log records have been buffered. Logs are not guaranteed * to be committed if this object is deallocated before pushLogs() is called. * * @abstract * @memberof AbstractLogger */ abstract pushLogs(): void; /** * Push logs asynchronously if any log records have been buffered. Logs are not * guaranteed to be committed if this object is deallocated before pushLogsAsync() * is called and resolved successfully. * * @abstract * @return {*} {Promise} * @memberof AbstractLogger */ abstract pushLogsAsync(): Promise; clearTimeOutForLogger(): void; /** * Retrieves the session ID from browser session storage, or generates a new one * if not already present. The session ID helps to differentiate app logs if duplicate * instances of the parent DaVinci App are loaded in multiple tabs. * * @protected * @memberof AbstractLogger */ protected getTabIdFromSession(): void; /** * Generates a random UUID. Method of generation is not secure. Only use this * method to generate UUIDs if the UUID cannot be used to compromise data and system * security. * * @protected * @return {*} {string} A randomly generated UUID * @memberof AbstractLogger */ protected uuidv4(): string; /** * Captures all log record information as a LogObj object * * @protected * @param {LOG_LEVEL} logLevel Log Level of log record * @param {ERROR_CODE} errorCode Classification of error * @param {string} message Content of log record * @param {Date} [localTime=new Date()] Local time when log record was generated * @return {*} {LogObj} Wrapper object for log record * @memberof AbstractLogger */ protected generateLogObj(logLevel: LOG_LEVEL, errorCode: ERROR_CODE, message: string, localTime?: Date): LogObj; /** * This method will sync the logLevel with account level log level of the logged in user. * User has to be logged in before calling this method. */ protected syncLogLevel(): void; }