@datadog/browser-logs
Version:
33 lines • 1.8 kB
JavaScript
import { DISCARDED, ErrorSource, buildTags, combine, createEventRateLimiter, getRelativeTime, } from '@datadog/browser-core';
import { STATUSES } from './logger';
export function startLogsAssembly(configuration, lifeCycle, hooks, getCommonContext, reportError, eventRateLimit) {
const statusWithCustom = STATUSES.concat(['custom']);
const logRateLimiters = {};
statusWithCustom.forEach((status) => {
logRateLimiters[status] = createEventRateLimiter(status, reportError, eventRateLimit);
});
lifeCycle.subscribe(0 /* LifeCycleEventType.RAW_LOG_COLLECTED */, ({ rawLogsEvent, messageContext = undefined, savedCommonContext = undefined, domainContext, ddtags = [] }) => {
var _a, _b;
const startTime = getRelativeTime(rawLogsEvent.date);
const commonContext = savedCommonContext || getCommonContext();
const defaultLogsEventAttributes = hooks.triggerHook(0 /* HookNames.Assemble */, {
startTime,
});
if (defaultLogsEventAttributes === DISCARDED) {
return;
}
const defaultDdtags = buildTags(configuration);
const log = combine({
view: commonContext.view,
}, defaultLogsEventAttributes, rawLogsEvent, messageContext, {
ddtags: defaultDdtags.concat(ddtags).join(','),
});
if (((_a = configuration.beforeSend) === null || _a === void 0 ? void 0 : _a.call(configuration, log, domainContext)) === false ||
(log.origin !== ErrorSource.AGENT &&
((_b = logRateLimiters[log.status]) !== null && _b !== void 0 ? _b : logRateLimiters['custom']).isLimitReached())) {
return;
}
lifeCycle.notify(1 /* LifeCycleEventType.LOG_COLLECTED */, log);
});
}
//# sourceMappingURL=assembly.js.map