instrument_log_exporter behaviour (instrument v1.0.0)

View Source

Log exporter manager for OpenTelemetry-compatible log export.

This module manages log exporters and handles batch processing of log records for efficient export.

Example Usage

  %% Register console exporter for logs
  instrument_log_exporter:register(instrument_log_exporter_console:new()),
 
  %% Register OTLP exporter
  instrument_log_exporter:register(instrument_log_exporter_otlp:new(#{
      endpoint => "http://localhost:4318"
  })),
 
  %% Logs are exported when using instrument_logger with exporter mode

Summary

Functions

Behaviour callbacks for log exporters

Exports a single log record (adds to batch).

Exports multiple log records immediately.

Forces a flush of all pending log records.

Lists all registered exporters.

Registers a log exporter.

Shuts down all exporters.

Starts the log exporter manager.

Unregisters a log exporter.

Types

export_result/0

-type export_result() :: ok | {error, term()}.

exporter/0

-type exporter() :: #{module := module(), config := map(), state := term()}.

Functions

behaviour_info(_)

Behaviour callbacks for log exporters

code_change(OldVsn, State, Extra)

export(Log_record)

-spec export(#log_record{timestamp :: integer() | undefined,
                         observed_timestamp :: integer() | undefined,
                         severity_number :: integer() | undefined,
                         severity_text :: binary() | undefined,
                         body :: term(),
                         attributes :: map(),
                         trace_id :: <<_:128>> | undefined,
                         span_id :: <<_:64>> | undefined,
                         trace_flags :: 0 | 1 | undefined,
                         resource ::
                             #resource{attributes :: map(), schema_url :: binary() | undefined} |
                             undefined,
                         scope ::
                             #scope{name :: binary(),
                                    version :: binary() | undefined,
                                    attributes :: map(),
                                    schema_url :: binary() | undefined} |
                             undefined}) ->
                ok.

Exports a single log record (adds to batch).

export_batch(LogRecords)

-spec export_batch([#log_record{timestamp :: integer() | undefined,
                                observed_timestamp :: integer() | undefined,
                                severity_number :: integer() | undefined,
                                severity_text :: binary() | undefined,
                                body :: term(),
                                attributes :: map(),
                                trace_id :: <<_:128>> | undefined,
                                span_id :: <<_:64>> | undefined,
                                trace_flags :: 0 | 1 | undefined,
                                resource ::
                                    #resource{attributes :: map(), schema_url :: binary() | undefined} |
                                    undefined,
                                scope ::
                                    #scope{name :: binary(),
                                           version :: binary() | undefined,
                                           attributes :: map(),
                                           schema_url :: binary() | undefined} |
                                    undefined}]) ->
                      ok.

Exports multiple log records immediately.

flush()

-spec flush() -> ok.

Forces a flush of all pending log records.

handle_call(Request, From, State)

handle_cast(Msg, State)

handle_info(Info, State)

init(_)

list()

-spec list() -> [module()].

Lists all registered exporters.

register(Exporter)

-spec register(#{module := module(), config => map()}) -> ok | {error, term()}.

Registers a log exporter.

shutdown()

-spec shutdown() -> ok.

Shuts down all exporters.

start_link()

-spec start_link() -> {ok, pid()} | {error, term()}.

Starts the log exporter manager.

terminate(Reason, State)

unregister(Module)

-spec unregister(module()) -> ok.

Unregisters a log exporter.