quic_qlog (quic v1.3.1)
View SourceQLOG Tracing for QUIC (draft-ietf-quic-qlog-quic-events)
Provides JSON-SEQ format trace files for debug visibility with Wireshark/qvis compatibility.
Usage: pass qlog option to quic:connect/4: #{qlog => #{enabled => true, dir => "/tmp/qlog"}}
Summary
Functions
Close the QLOG context and flush remaining data.
Log connection_closed event.
Log connection_started event.
Log connection_state_updated event.
Log frames_processed event.
Check if QLOG is enabled for this context.
Log metrics_updated event.
Create a new QLOG context from connection options. Returns undefined if qlog is disabled.
Log packet_lost event.
Log a packet_received event.
Log a packet_sent event.
Log packets_acked event.
Start the async writer process.
Writer process main loop.
Types
-type qlog_opts() :: #{enabled => boolean(), dir => file:filename(), events => all | [atom()]}.
Functions
-spec close(#qlog_ctx{enabled :: boolean(), writer :: pid() | undefined, odcid :: binary() | undefined, reference_time :: integer() | undefined, vantage_point :: client | server | undefined, events :: all | [atom()], dir :: file:filename()} | undefined) -> ok.
Close the QLOG context and flush remaining data.
-spec connection_closed(#qlog_ctx{enabled :: boolean(), writer :: pid() | undefined, odcid :: binary() | undefined, reference_time :: integer() | undefined, vantage_point :: client | server | undefined, events :: all | [atom()], dir :: file:filename()} | undefined, integer() | atom(), binary() | undefined) -> ok.
Log connection_closed event.
-spec connection_started(#qlog_ctx{enabled :: boolean(), writer :: pid() | undefined, odcid :: binary() | undefined, reference_time :: integer() | undefined, vantage_point :: client | server | undefined, events :: all | [atom()], dir :: file:filename()} | undefined) -> ok.
Log connection_started event.
-spec connection_state_updated(#qlog_ctx{enabled :: boolean(), writer :: pid() | undefined, odcid :: binary() | undefined, reference_time :: integer() | undefined, vantage_point :: client | server | undefined, events :: all | [atom()], dir :: file:filename()} | undefined, atom(), atom()) -> ok.
Log connection_state_updated event.
-spec frames_processed(#qlog_ctx{enabled :: boolean(), writer :: pid() | undefined, odcid :: binary() | undefined, reference_time :: integer() | undefined, vantage_point :: client | server | undefined, events :: all | [atom()], dir :: file:filename()} | undefined, [term()]) -> ok.
Log frames_processed event.
-spec is_enabled(#qlog_ctx{enabled :: boolean(), writer :: pid() | undefined, odcid :: binary() | undefined, reference_time :: integer() | undefined, vantage_point :: client | server | undefined, events :: all | [atom()], dir :: file:filename()} | undefined) -> boolean().
Check if QLOG is enabled for this context.
-spec metrics_updated(#qlog_ctx{enabled :: boolean(), writer :: pid() | undefined, odcid :: binary() | undefined, reference_time :: integer() | undefined, vantage_point :: client | server | undefined, events :: all | [atom()], dir :: file:filename()} | undefined, map()) -> ok.
Log metrics_updated event.
-spec new(Opts :: map(), ODCID :: binary(), VantagePoint :: client | server) -> #qlog_ctx{enabled :: boolean(), writer :: pid() | undefined, odcid :: binary() | undefined, reference_time :: integer() | undefined, vantage_point :: client | server | undefined, events :: all | [atom()], dir :: file:filename()} | undefined.
Create a new QLOG context from connection options. Returns undefined if qlog is disabled.
-spec packet_lost(#qlog_ctx{enabled :: boolean(), writer :: pid() | undefined, odcid :: binary() | undefined, reference_time :: integer() | undefined, vantage_point :: client | server | undefined, events :: all | [atom()], dir :: file:filename()} | undefined, map()) -> ok.
Log packet_lost event.
-spec packet_received(#qlog_ctx{enabled :: boolean(), writer :: pid() | undefined, odcid :: binary() | undefined, reference_time :: integer() | undefined, vantage_point :: client | server | undefined, events :: all | [atom()], dir :: file:filename()} | undefined, map()) -> ok.
Log a packet_received event.
-spec packet_sent(#qlog_ctx{enabled :: boolean(), writer :: pid() | undefined, odcid :: binary() | undefined, reference_time :: integer() | undefined, vantage_point :: client | server | undefined, events :: all | [atom()], dir :: file:filename()} | undefined, map()) -> ok.
Log a packet_sent event.
-spec packets_acked(#qlog_ctx{enabled :: boolean(), writer :: pid() | undefined, odcid :: binary() | undefined, reference_time :: integer() | undefined, vantage_point :: client | server | undefined, events :: all | [atom()], dir :: file:filename()} | undefined, [non_neg_integer()], map()) -> ok.
Log packets_acked event.
-spec start_writer(file:filename(), iodata()) -> {ok, pid()}.
Start the async writer process.
Writer process main loop.