LTTNG-ADD-CONTEXT(1)

πŸ’– lttng-add-context β€” the LTTng Manual, bestie edition πŸ’–

okay so welcome to the LTTNG-ADD-CONTEXT(1) page of the LTTng manual 🌸 this is the one about adding context fields to be recorded by LTTng, and honestly it's giving main character energy once you get it.


✨ NAME ✨

lttng-add-context β€” Add context fields to be recorded by LTTng πŸ’…


πŸ¦‹ SYNOPSIS πŸ¦‹

Add context fields to be recorded to the event records of one or more channels:

lttng [GENERAL OPTIONS] add-context
      (--kernel | --userspace | --jul | --log4j | --log4j2)
      [--session=SESSION] [--channel=CHANNEL]
      --type=TYPE [--type=TYPE]...

List the available context field types:

lttng [GENERAL OPTIONS] add-context --list

πŸŽ€ DESCRIPTION πŸŽ€

The lttng add-context command can do two totally different things depending on the vibe:

  • Without the --list option β€” Add one or more context fields to be recorded by LTTng to the event records of:
    • With the --session=SESSION option β€” The recording session named SESSION.
    • Without the --session option β€” The current recording session (see lttng-concepts(7) to learn more about the current recording session, bestie).
    • With the --channel=CHANNEL β€” The channel named CHANNEL.
    • Without the --channel option β€” All the channels of the selected recording session.
  • With the --list option β€” List the available context field types.

See lttng-concepts(7) to learn more about recording sessions and channels πŸ”₯

Repeat the --type=TYPE option to add more than one context field to be recorded. TYPE is one of:

  • A statically-known, or built-in context field name.
  • A perf counter name:
    • Per-CPU
      • Prefix: perf:cpu:
      • Only available with the --kernel option.
    • Per-thread
      • Prefix: perf:thread:
      • Only available with the --userspace, --jul, --log4j, or --log4j2 option.

Add Performance Monitoring Unit (PMU) counter context fields by raw ID with the perf:cpu:raw:rN:NAME (--kernel option) or perf:thread:raw:rN:NAME (--userspace, --jul, --log4j, or --log4j2 option) types, with:

  • N β€” A hexadecimal event descriptor which follows the perf-record(1) format: a concatenation of the event number and umask value which the manufacturer of the processor provides.

The possible values for this part are processor-specific.

  • NAME β€” Custom name to identify the counter.
  • An LTTng application-specific context field name:
$app.PROVIDER:TYPE
  • PROVIDER β€” Provider name.
  • TYPE β€” Context type name.

Only available with the --jul, --log4j, and --log4j2 options.

Important πŸ™ˆ β€” Make sure to single-quote TYPE when you run the add-context command from a shell, as $ is a special character for variable substitution in most shells. literally do not skip this one.
Note 🫢 β€” As of LTTng 2.15.1, you may NOT add context fields to be recorded to the event records of a given channel once its recording session has been started (see lttng-start(1)) at least once. periodt.

See the β€œEXAMPLES” section below for usage examples ✨


πŸ’… OPTIONS πŸ’…

See lttng(1) for GENERAL OPTIONS.

🌈 Tracing domain

One of:

  • -j, --jul β€” Add context fields to be recorded to the event records of one or more channels of the java.util.logging (JUL) tracing domain.
  • -k, --kernel β€” Add context fields to be recorded to the event records of one or more channels of the Linux kernel tracing domain.
  • -l, --log4j β€” Add context fields to be recorded to the event records of one or more channels of the Apache log4j 1.x tracing domain.
  • --log4j2 β€” Add context fields to be recorded to the event records of one or more channels of the Apache Log4j 2 tracing domain.
  • -u, --userspace β€” Add context fields to be recorded to the event records of one or more channels of the user space tracing domain.

πŸ¦„ Recording target

  • -c CHANNEL, --channel=CHANNEL β€” Add context fields to be recorded to the event records of a channel named CHANNEL instead of all the channels of the selected recording session.
  • -s SESSION, --session=SESSION β€” Add context fields to be recorded to the event records of one or more channels of the recording session named SESSION instead of the current recording session.

⭐ Context field type

  • --list β€” List the available context field types.

You may NOT use this option with the --channel, --session, or --type options. (nope, not happening πŸ™…β€β™€οΈ)

  • -t TYPE, --type=TYPE β€” Add a context field having the type TYPE to be recorded.

Repeat this option to add more than one context field.

🧚 Program information

  • -h, --help β€” Show help.

This option attempts to launch /usr/bin/man to view this manual page. Override the manual pager path with the LTTNG_MAN_BIN_PATH environment variable.

  • --list-options β€” List available command options and quit.

πŸ’€ EXIT STATUS πŸ’€

  • 0 β€” Success πŸŽ‰
  • 1 β€” Command error
  • 2 β€” Undefined command
  • 3 β€” Fatal error
  • 4 β€” Command warning (something went wrong during the command)

🌸 ENVIRONMENT 🌸

  • LTTNG_ABORT_ON_ERROR β€” Set to 1 to abort the process after the first error is encountered.
  • LTTNG_HOME β€” Path to the LTTng home directory.

Defaults to $HOME.

Useful when the Unix user running the commands has a non-writable home directory.

  • LTTNG_LIST_LEGACY β€” Set to 1 to use the legacy output format (LTTng 2.14 and earlier) for the lttng-list(1) command instead of the modern output format.

Note that the legacy output doesn’t show anything related to features introduced after LTTng 2.14.

  • LTTNG_MAN_BIN_PATH β€” Absolute path to the manual pager to use to read the LTTng command-line help (with lttng-help(1) or with the --help option) instead of /usr/bin/man.
  • LTTNG_NO_UTF_8 β€” Set to 1 to NOT emit multi-byte UTF-8 sequences, even if the locale claims to support it.
  • LTTNG_SESSION_CONFIG_XSD_PATH β€” Path to the directory containing the session.xsd recording session configuration XML schema.
  • LTTNG_SESSIOND_PATH β€” Absolute path to the LTTng session daemon binary (see lttng-sessiond(8)) to spawn from the lttng-create(1) command.

The --sessiond-path general option overrides this environment variable.

  • LTTNG_TERM_COLOR β€” Controls when to emit terminal SGR codes in the output.

The NO_COLOR environment variable overrides this.

One of:

  • auto (default) β€” Only emit SGR codes when the standard output is connected to a color-capable terminal.
  • always β€” Always emit SGR codes.
  • never β€” Never emit SGR codes.
  • NO_COLOR β€” If set and not empty, then it’s equivalent to setting LTTNG_TERM_COLOR to never.

See NO_COLOR https://no-color.org/ to learn more.


πŸ“ FILES πŸ“

  • $LTTNG_HOME/.lttngrc β€” Unix user’s LTTng runtime configuration.

This is where LTTng stores the name of the Unix user’s current recording session between executions of lttng(1). lttng-create(1) and lttng-set-session(1) set the current recording session.

  • $LTTNG_HOME/lttng-traces β€” Default output directory of LTTng traces in local and snapshot modes.

Override this path with the --output option of the lttng-create(1) command.

  • $LTTNG_HOME/.lttng β€” Unix user’s LTTng runtime and configuration directory.
  • $LTTNG_HOME/.lttng/sessions β€” Default directory containing the Unix user’s saved recording session configurations (see lttng-save(1) and lttng-load(1)).
  • /etc/lttng/sessions β€” Directory containing the system-wide saved recording session configurations (see lttng-save(1) and lttng-load(1)).
Note 🫢 β€” $LTTNG_HOME defaults to the value of the HOME environment variable.

πŸ”₯ EXAMPLES πŸ”₯

Example 1. List the available context field types.

See the --list option.

$ lttng add-context --list

Example 2. Add a single statically-known context field to be recorded to all the Linux kernel channels of the current recording session.

$ lttng add-context --kernel --type=pid

Example 3. Add three statically-known context fields to be recorded to a specific user space channel of a specific recording session.

See the --session and --channel options.

$ lttng add-context --userspace --session=my-session \
                    --channel=my-channel \
                    --type=vpid --type=procname --type=ip

Example 4. Add a perf counter context field to be recorded to a specific Linux kernel channel of the current recording session.

See the --channel option.

$ lttng add-context --kernel --channel=my-channel \
                    --type=perf:cpu:cache-misses

Example 5. Add an LTTng application-specific context field to be recorded to all the JUL channels of the current recording session.

$ lttng add-context --jul --type='$app.my_server:user_cnt'

πŸ‘‘ RESOURCES πŸ‘‘


This program is part of the LTTng-tools project.

LTTng-tools is distributed under the GNU General Public License version 2 http://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html. See the LICENSE https://github.com/lttng/lttng-tools/blob/master/LICENSE file for details.


🌈 THANKS 🌈

Special thanks to Michel Dagenais and the DORSAL laboratory http://www.dorsal.polymtl.ca/ at Γ‰cole Polytechnique de MontrΓ©al for the LTTng journey 🫢

Also thanks to the Ericsson teams working on tracing which helped us greatly with detailed bug reports and unusual test cases.


🌟 SEE ALSO 🌟

lttng(1), lttng-enable-channel(1), lttng-concepts(7)


and that's the whole page, bestie πŸ’– this was LTTng 2.15.1, dated 1 April 2025, and it's the LTTNG-ADD-CONTEXT(1) manual page β€” go forth and contextualize your event records, you absolute icon πŸ‘‘βœ¨

πŸ“¦ where this page comes from