opentelemetry-js/experimental/packages/api-events
Marc Pichler bac68fc7d4
feat: add api release preparation scripts, github release creation scripts (#4704)
* feat: add more scripts for release creation

* Update scripts/extract-latest-release-notes.js

* fix: replace console.log() with console.warn(), ensure get-version.js is a version by checking against a regex

* chore: add comment to describe the regex
2024-05-21 14:36:43 +02:00
..
src Add `data` field to the Event interface (#4575) 2024-04-02 10:02:52 +02:00
test Rename EventEmitter to EventLogger in the Events API (#4568) 2024-03-25 17:35:20 +01:00
.eslintignore Separate Events API from Logs API (#3550) 2023-02-07 13:23:05 -05:00
.eslintrc.js chore(deps): update dependency eslint to v8.43.0 (#3929) 2023-07-06 15:14:56 +02:00
LICENSE Separate Events API from Logs API (#3550) 2023-02-07 13:23:05 -05:00
README.md Rename EventEmitter to EventLogger in the Events API (#4568) 2024-03-25 17:35:20 +01:00
karma.conf.js Separate Events API from Logs API (#3550) 2023-02-07 13:23:05 -05:00
package.json feat: add api release preparation scripts, github release creation scripts (#4704) 2024-05-21 14:36:43 +02:00
tsconfig.esm.json Add `data` field to the Event interface (#4575) 2024-04-02 10:02:52 +02:00
tsconfig.esnext.json Add `data` field to the Event interface (#4575) 2024-04-02 10:02:52 +02:00
tsconfig.json Add `data` field to the Event interface (#4575) 2024-04-02 10:02:52 +02:00

README.md

OpenTelemetry API for JavaScript

NPM Published Version Apache License

This package provides everything needed to interact with the unstable OpenTelemetry Events API, including all TypeScript interfaces, enums, and no-op implementations. It is intended for use both on the server and in the browser.

Beta Software - Use at your own risk

The events API is considered alpha software and there is no guarantee of stability or long-term support. When the API is stabilized, it will be made available and supported long-term in the @opentelemetry/api package and this package will be deprecated.

Quick Start

Purposefully left blank until SDK is available.

Version Compatibility

Because the npm installer and node module resolution algorithm could potentially allow two or more copies of any given package to exist within the same node_modules structure, the OpenTelemetry API takes advantage of a variable on the global object to store the global API. When an API method in the API package is called, it checks if this global API exists and proxies calls to it if and only if it is a compatible API version. This means if a package has a dependency on an OpenTelemetry API version which is not compatible with the API used by the end user, the package will receive a no-op implementation of the API.

Advanced Use

API Methods

If you are writing an instrumentation library, or prefer to call the API methods directly rather than using the register method on the Tracer/Meter/Logger Provider, OpenTelemetry provides direct access to the underlying API methods through the @opentelemetry/api-events package. API entry points are defined as global singleton objects trace, metrics, logs, events, propagation, and context which contain methods used to initialize SDK implementations and acquire resources from the API.

  • [Events API Documentation][events-api-docs]
const api = require("@opentelemetry/api-events");

/* A specific implementation of EventLoggerProvider comes from an SDK */
const eventLoggerProvider = createEventLoggerProvider();

/* Initialize EventLoggerProvider */
api.events.setGlobalEventLoggerProvider(eventLoggerProvider);
/* returns eventLoggerProvider (no-op if a working provider has not been initialized) */
api.events.getEventLoggerProvider();
/* returns an event logger from the registered global event logger provider (no-op if a working provider has not been initialized) */
const eventLogger = api.events.getEventLogger(name, version);

// logging an event in an instrumentation library
eventLogger.emit({ name: 'event-name' });

License

Apache 2.0 - See LICENSE for more information.