UNPKG

@itwin/core-bentley

Version:

Bentley JavaScript core components

173 lines • 8.94 kB
/** @packageDocumentation * @module Logging */ import { BeEvent } from "./BeEvent"; import { LoggingMetaData } from "./BentleyError"; /** Defines the *signature* for a log function. * @public */ export type LogFunction = (category: string, message: string, metaData: LoggingMetaData) => void; /** Use to categorize logging messages by severity. * @public */ export declare enum LogLevel { /** Tracing and debugging - low level */ Trace = 0, /** Information - mid level */ Info = 1, /** Warnings - high level */ Warning = 2, /** Errors - highest level */ Error = 3, /** Higher than any real logging level. This is used to turn a category off. */ None = 4 } /** Identifies a logging category and the LogLevel that should be used for it. The LogLevel is specified by its string name. * @public */ export interface LoggerCategoryAndLevel { category: string; logLevel: string; } /** Specifies logging levels, including the default logging level and a set of categories and levels for them. * @public */ export interface LoggerLevelsConfig { defaultLevel?: string; categoryLevels?: LoggerCategoryAndLevel[]; } /** A global set of metadata that should be included with every log message. * You can provide an object representing the metadata, or a function to be invoked to obtain the metadata object each * time a message is logged. * Each key-value pair of the object will be stringified and combined with the log message's per-call metadata. * The keys you provide to each method is used solely to identify your entries so that you can later update or delete them - these keys * are **not** included in log messages. Don't modify or remove metadata associated with keys that belong to someone else. * @note Each extra bit of metadata adds cost and overhead to the logging system. Avoid adding unnecessary or unnecessarily verbose metadata. * @see [[Logger.staticMetaData]] to access the global metadata. * @beta */ export interface StaticLoggerMetaData { /** Add or update some metadata to be included with every logged message. */ set(key: string, metadata: LoggingMetaData): void; /** Remove metadata previously [[set]] using the specified `key`, so it will no longer be included with every logged message. */ delete(key: string): void; } /** Logger allows libraries and apps to report potentially useful information about operations, and it allows apps and users to control * how or if the logged information is displayed or collected. See [Learning about Logging]($docs/learning/common/Logging.md). * @public */ export declare class Logger { protected static _logError: LogFunction | undefined; protected static _logWarning: LogFunction | undefined; protected static _logInfo: LogFunction | undefined; protected static _logTrace: LogFunction | undefined; private static _onLogLevelChanged; private static _staticMetaData; /** An event raised whenever [[setLevel]] or [[setLevelDefault]] is called. */ static get onLogLevelChanged(): BeEvent<() => void>; private static _categoryFilter; /** Maps category names to the least severe level at which messages in that category should be displayed, * or `undefined` if a minimum has not been defined. * @see [[setLevel]] to change the minimum logging level for a category. */ static get categoryFilter(): Readonly<{ [categoryName: string]: LogLevel | undefined; }>; private static _minLevel; /** The least severe level at which messages should be displayed by default. * @see [[setLevelDefault]] to change this default. * @see [[setLevel]] to override this default for specific categories. */ static get minLevel(): LogLevel | undefined; /** Should the call stack be included when an exception is logged? */ static logExceptionCallstacks: boolean; /** Contains metadata that should be included with every logged message. * @beta */ static get staticMetaData(): StaticLoggerMetaData; /** Initialize the logger streams. Should be called at application initialization time. */ static initialize(logError?: LogFunction, logWarning?: LogFunction, logInfo?: LogFunction, logTrace?: LogFunction): void; /** Initialize the logger to output to the console. */ static initializeToConsole(): void; /** merge the supplied metadata with all static metadata into one object */ static getMetaData(metaData?: LoggingMetaData): object; /** stringify the metadata for a log message by merging the supplied metadata with all static metadata into one object that is then `JSON.stringify`ed. */ static stringifyMetaData(metaData?: LoggingMetaData): string; /** Set the least severe level at which messages should be displayed by default. Call setLevel to override this default setting for specific categories. */ static setLevelDefault(minLevel: LogLevel): void; /** Set the minimum logging level for the specified category. The minimum level is least severe level at which messages in the * specified category should be displayed. */ static setLevel(category: string, minLevel: LogLevel): void; /** Interpret a string as the name of a LogLevel */ static parseLogLevel(str: string): LogLevel; /** Set the log level for multiple categories at once. Also see [[validateProps]] */ static configureLevels(cfg: LoggerLevelsConfig): void; private static isLogLevel; /** Check that the specified object is a valid LoggerLevelsConfig. This is useful when reading a config from a .json file. */ static validateProps(config: any): void; /** Get the minimum logging level for the specified category. */ static getLevel(category: string): LogLevel | undefined; /** Turns off the least severe level at which messages should be displayed by default. * This turns off logging for all messages for which no category minimum level is defined. */ static turnOffLevelDefault(): void; /** Turns off all category level filters previously defined with [[Logger.setLevel]]. */ static turnOffCategories(): void; /** Check if messages in the specified category should be displayed at this level of severity. */ static isEnabled(category: string, level: LogLevel): boolean; /** Log the specified message to the **error** stream. * @param category The category of the message. * @param message The message. * @param metaData Optional data for the message */ static logError(category: string, message: string, metaData?: LoggingMetaData): void; private static getExceptionMessage; /** Log the specified exception. * For legacy [[BentleyError]] exceptions, the special "exceptionType" property will be added as metadata. Otherwise, all enumerable members of the exception are logged as metadata. * @param category The category of the message. * @param err The exception object. * @param log The logger output function to use - defaults to Logger.logError */ static logException(category: string, err: any, log?: LogFunction): void; /** Log the specified message to the **warning** stream. * @param category The category of the message. * @param message The message. * @param metaData Optional data for the message */ static logWarning(category: string, message: string, metaData?: LoggingMetaData): void; /** Log the specified message to the **info** stream. * @param category The category of the message. * @param message The message. * @param metaData Optional data for the message */ static logInfo(category: string, message: string, metaData?: LoggingMetaData): void; /** Log the specified message to the **trace** stream. * @param category The category of the message. * @param message The message. * @param metaData Optional data for the message */ static logTrace(category: string, message: string, metaData?: LoggingMetaData): void; } /** Simple performance diagnostics utility. * It measures the time from construction to disposal. On disposal it logs the routine name along with * the duration in milliseconds. * It also logs the routine name at construction time so that nested calls can be disambiguated. * * The timings are logged using the log category **Performance** and log severity [[LogLevel.INFO]]. * Enable those, if you want to capture timings. * @public */ export declare class PerfLogger implements Disposable { private static _severity; private _operation; private _metaData?; private _startTimeStamp; constructor(operation: string, metaData?: LoggingMetaData); private logMessage; [Symbol.dispose](): void; /** @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [Symbol.dispose] instead. */ dispose(): void; } //# sourceMappingURL=Logger.d.ts.map