@datadog/browser-logs
Version:
229 lines (228 loc) • 8.34 kB
TypeScript
import type { TrackingConsent, PublicApi, ContextManager, Account, Context, User } from '@datadog/browser-core';
import type { LogsInitConfiguration } from '../domain/configuration';
import type { HandlerType } from '../domain/logger';
import type { StatusType } from '../domain/logger/isAuthorized';
import { Logger } from '../domain/logger';
import type { InternalContext } from '../domain/contexts/internalContext';
import type { StartLogsResult } from './startLogs';
export interface LoggerConfiguration {
level?: StatusType;
handler?: HandlerType | HandlerType[];
context?: object;
}
/**
* Public API for the Logs browser SDK.
*
* See [Browser Log Collection](https://docs.datadoghq.com/logs/log_collection/javascript) for further information.
*
* @category Main
*/
export interface LogsPublicApi extends PublicApi {
/**
* The default logger
*
* @category Logger
*/
logger: Logger;
/**
* Init the Logs browser SDK.
*
* See [Browser Log Collection](https://docs.datadoghq.com/logs/log_collection/javascript) for further information.
*
* @category Init
* @param initConfiguration - Configuration options of the SDK
*/
init: (initConfiguration: LogsInitConfiguration) => void;
/**
* Set the tracking consent of the current user.
*
* Logs will be sent only if it is set to "granted". This value won't be stored by the library
* across page loads: you will need to call this method or set the appropriate `trackingConsent`
* field in the init() method at each page load.
*
* If this method is called before the init() method, the provided value will take precedence
* over the one provided as initialization parameter.
*
* See [User tracking consent](https://docs.datadoghq.com/logs/log_collection/javascript/#user-tracking-consent) for further information.
*
* @category Privacy
* @param trackingConsent - The user tracking consent
*/
setTrackingConsent: (trackingConsent: TrackingConsent) => void;
/**
* Set the global context information to all events, stored in `@context`
* See [Global context](https://docs.datadoghq.com/logs/log_collection/javascript/#overwrite-context) for further information.
*
* @category Context - Global Context
* @param context - Global context
*/
setGlobalContext: (context: any) => void;
/**
* Get the global Context
*
* See [Global context](https://docs.datadoghq.com/logs/log_collection/javascript/#overwrite-context) for further information.
*
* @category Context - Global Context
*/
getGlobalContext: () => Context;
/**
* Set or update a global context property, stored in `@context.<key>`
*
* See [Global context](https://docs.datadoghq.com/logs/log_collection/javascript/#overwrite-context) for further information.
*
* @category Context - Global Context
* @param key - Key of the property
* @param value - Value of the property
*/
setGlobalContextProperty: (key: any, value: any) => void;
/**
* Remove a global context property
*
* See [Global context](https://docs.datadoghq.com/logs/log_collection/javascript/#overwrite-context) for further information.
*
* @category Context - Global Context
*/
removeGlobalContextProperty: (key: any) => void;
/**
* Clear the global context
*
* See [Global context](https://docs.datadoghq.com/logs/log_collection/javascript/#overwrite-context) for further information.
*
* @category Context - Global Context
*/
clearGlobalContext: () => void;
/**
* Set user information to all events, stored in `@usr`
*
* See [User session](https://docs.datadoghq.com/logs/log_collection/javascript/#user-context) for further information.
*
* @category Context - User
* @param newUser - User information
*/
setUser(newUser: User & {
id: string;
}): void;
/**
* Set user information to all events, stored in `@usr`
*
* @category Context - User
* @deprecated You must specify a user id, favor using {@link setUser} instead
* @param newUser - User information with optional id
*/
setUser(newUser: User): void;
/**
* Get user information
*
* See [User session](https://docs.datadoghq.com/logs/log_collection/javascript/#user-context) for further information.
*
* @category Context - User
* @returns User information
*/
getUser: () => Context;
/**
* Set or update the user property, stored in `@usr.<key>`
*
* See [User session](https://docs.datadoghq.com/logs/log_collection/javascript/#user-context) for further information.
*
* @category Context - User
* @param key - Key of the property
* @param property - Value of the property
*/
setUserProperty: (key: any, property: any) => void;
/**
* Remove a user property
*
* @category Context - User
* @param key - Key of the property to remove
* @see [User session](https://docs.datadoghq.com/logs/log_collection/javascript/#user-context) for further information.
*/
removeUserProperty: (key: any) => void;
/**
* Clear all user information
*
* See [User session](https://docs.datadoghq.com/logs/log_collection/javascript/#user-context) for further information.
*
* @category Context - User
*/
clearUser: () => void;
/**
* Set account information to all events, stored in `@account`
*
* @category Context - Account
* @param newAccount - Account information
*/
setAccount: (newAccount: Account) => void;
/**
* Get account information
*
* @category Context - Account
* @returns Account information
*/
getAccount: () => Context;
/**
* Set or update the account property, stored in `@account.<key>`
*
* @category Context - Account
* @param key - Key of the property
* @param property - Value of the property
*/
setAccountProperty: (key: string, property: any) => void;
/**
* Remove an account property
*
* @category Context - Account
* @param key - Key of the property to remove
*/
removeAccountProperty: (key: string) => void;
/**
* Clear all account information
*
* @category Context - Account
* @returns Clear all account information
*/
clearAccount: () => void;
/**
* The Datadog browser logs SDK contains a default logger `DD_LOGS.logger`, but this API allows to create different ones.
*
* See [Define multiple loggers](https://docs.datadoghq.com/logs/log_collection/javascript/#define-multiple-loggers) for further information.
*
* @category Logger
* @param name - Name of the logger
* @param conf - Configuration of the logger (level, handler, context)
*/
createLogger: (name: string, conf?: LoggerConfiguration) => Logger;
/**
* Get a logger
*
* See [Define multiple loggers](https://docs.datadoghq.com/logs/log_collection/javascript/#define-multiple-loggers) for further information.
*
* @category Logger
* @param name - Name of the logger
*/
getLogger: (name: string) => Logger | undefined;
/**
* Get the init configuration
*
* @category Init
* @returns The init configuration
*/
getInitConfiguration: () => LogsInitConfiguration | undefined;
/**
* [Internal API] Get the internal SDK context
*
* See [Access internal context](https://docs.datadoghq.com/logs/log_collection/javascript/#access-internal-context) for further information.
*
* @internal
*/
getInternalContext: (startTime?: number) => InternalContext | undefined;
}
export interface Strategy {
init: (initConfiguration: LogsInitConfiguration, errorStack?: string) => void;
initConfiguration: LogsInitConfiguration | undefined;
globalContext: ContextManager;
accountContext: ContextManager;
userContext: ContextManager;
getInternalContext: StartLogsResult['getInternalContext'];
handleLog: StartLogsResult['handleLog'];
}
export declare function makeLogsPublicApi(): LogsPublicApi;