Use compiler-agnostic defines to silence warning
[lttng-tools.git] / doc / man / lttng-enable-event.1.txt
CommitLineData
e9b06e2b
PP
1lttng-enable-event(1)
2=====================
e9711845 3:revdate: 14 June 2021
e9b06e2b
PP
4
5
6NAME
7----
484b2a0c 8lttng-enable-event - Create or enable LTTng recording event rules
e9b06e2b
PP
9
10
11SYNOPSIS
12--------
484b2a0c
PP
13Create or enable one or more recording event rules to match Linux kernel
14tracepoint or system call events:
e9b06e2b
PP
15
16[verse]
484b2a0c
PP
17*lttng* ['linkgenoptions:(GENERAL OPTIONS)'] *enable-event* option:--kernel [option:--tracepoint | option:--syscall]
18 (option:--all | 'NAME'[,'NAME']...) [option:--filter='EXPR']
19 [option:--session='SESSION'] [option:--channel='CHANNEL']
e9b06e2b 20
484b2a0c
PP
21Create or enable a recording event rule to match Linux kernel events
22created from a dynamic instrumentation point:
e9b06e2b
PP
23
24[verse]
484b2a0c
PP
25*lttng* ['linkgenoptions:(GENERAL OPTIONS)'] *enable-event* option:--kernel
26 (option:--probe='LOC' | option:--function='LOC' | option:--userspace-probe='LOC') 'RECORDNAME'
4ccdbb61 27 [option:--session='SESSION'] [option:--channel='CHANNEL']
e9b06e2b 28
484b2a0c
PP
29Create or enable one or more recording event rules to match
30user space tracepoint events:
e9b06e2b
PP
31
32[verse]
484b2a0c
PP
33*lttng* ['linkgenoptions:(GENERAL OPTIONS)'] *enable-event* option:--userspace [option:--tracepoint]
34 (option:--all | 'NAME'[,'NAME']...) [option:--exclude='XNAME'[,'XNAME']...]
35 [option:--loglevel='LOGLEVEL' | option:--loglevel-only='LOGLEVEL'] [option:--filter='EXPR']
36 [option:--session='SESSION'] [option:--channel='CHANNEL']
e9b06e2b 37
484b2a0c
PP
38Create or enable one or more recording event rules to match
39Java/Python logging events:
40
41[verse]
f1f15c35 42*lttng* ['linkgenoptions:(GENERAL OPTIONS)'] *enable-event* (option:--jul | option:--log4j | option:--log4j2 | option:--python)
484b2a0c
PP
43 [option:--tracepoint] (option:--all | 'NAME'[,'NAME']...)
44 [option:--loglevel='LOGLEVEL' | option:--loglevel-only='LOGLEVEL'] [option:--filter='EXPR']
45 [option:--session='SESSION'] [option:--channel='CHANNEL']
e9b06e2b
PP
46
47DESCRIPTION
48-----------
484b2a0c
PP
49The `lttng enable-event` command does one of:
50
51* Create one or more recording event rules.
52
26f0c779 53* Enable one or more disabled recording event rules.
484b2a0c 54+
da39b67c 55See the ``<<enable,Enable a disabled recording event rule>>'' section
484b2a0c
PP
56below.
57
26f0c779
PP
58See man:lttng-concepts(7) to learn more about instrumentation points,
59events, recording event rules, and event records.
484b2a0c 60
26f0c779 61The recording event rule(s) to create or enable belong to:
e9b06e2b 62
26f0c779 63With the option:--session='SESSION' option::
e9711845 64 The recording session named 'SESSION'.
484b2a0c 65
26f0c779 66Without the option:--session option::
e9711845
PP
67 The current recording session (see man:lttng-concepts(7) to learn
68 more about the current recording session).
26f0c779
PP
69
70With the option:--channel='CHANNEL' option::
71 The channel named 'CHANNEL'.
484b2a0c 72
26f0c779
PP
73Without the option:--channel option::
74 The channel named `channel0`.
75+
e9711845
PP
76If there's already a channel for the selected recording session and
77domain which isn't named `channel0`, the `enable-event` command fails.
8d65904a 78Otherwise, it automatically creates it.
484b2a0c 79
da39b67c 80See the ``<<examples,EXAMPLES>>'' section below for usage examples.
4414cae9 81
e9711845 82List the recording event rules of a specific recording session
26f0c779
PP
83and/or channel with the man:lttng-list(1) and man:lttng-status(1)
84commands.
85
86Disable an enabled recording event rule with the
484b2a0c
PP
87man:lttng-disable-event(1) command.
88
89
26f0c779
PP
90Overview of recording event rule conditions
91~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
484b2a0c
PP
92For LTTng to emit and record an event{nbsp}__E__,{nbsp}__E__ must
93satisfy *all* the conditions of a recording event rule{nbsp}__ER__, that
94is:
95
96Explicit conditions::
97 You set the following conditions when you create or
98 enable{nbsp}__ER__ with the `enable-event` command:
99+
100--
101* The instrumentation point type from which LTTng creates{nbsp}__E__
102 has a specific type.
103+
da39b67c
PP
104See the ``<<inst-point-type-cond,Instrumentation point type
105condition>>'' section below.
484b2a0c
PP
106
107* A pattern matches the name of{nbsp}__E__ while another pattern
108 doesn't.
109+
da39b67c 110See the ``<<event-name-cond,Event name condition>>'' section below.
484b2a0c
PP
111
112* The log level of the instrumentation point from which LTTng
113 creates{nbsp}__E__ is at least as severe as some value, or is exactly
114 some value.
115+
da39b67c
PP
116See the ``<<inst-point-log-level-cond,Instrumentation point log level
117condition>>'' section below.
484b2a0c
PP
118
119* The fields of the payload of{nbsp}__E__ and the current context fields
120 satisfy a filter expression.
121+
da39b67c 122See the ``<<filter-cond,Event payload and context filter condition>>''
484b2a0c
PP
123section below.
124--
125
126Implicit conditions::
127+
128--
129* _ER_ itself is enabled.
130+
131A recording event rule is enabled on creation.
132+
26f0c779 133Enable a disabled recording event rule with the `enable-event` command.
484b2a0c
PP
134
135* The channel to which{nbsp}__ER__ is attached is enabled.
136+
137A channel is enabled on creation.
138+
26f0c779 139Enable a disabled channel with the man:lttng-enable-channel(1) command.
484b2a0c 140
e9711845 141* The recording session of{nbsp}__ER__ is active (started).
484b2a0c 142+
e9711845 143A recording session is inactive (stopped) on creation.
484b2a0c 144+
e9711845 145Start an inactive recording session with the man:lttng-start(1) command.
484b2a0c 146
26f0c779
PP
147* The process for which LTTng creates{nbsp}__E__ is allowed to record
148 events.
484b2a0c 149+
e9711845 150All processes are allowed to record events on recording session
484b2a0c
PP
151creation.
152+
153Use the man:lttng-track(1) and man:lttng-untrack(1) commands to select
154which processes are allowed to record events based on specific process
155attributes.
156--
157
158The dedicated command-line options of most conditions are optional: if
159you don't specify the option, the associated condition is always
160satisfied.
161
162
163[[inst-point-type-cond]]
164Instrumentation point type condition
165~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
166An event{nbsp}__E__ satisfies the instrumentation point type condition
167of a recording event rule if the instrumentation point from which LTTng
168creates{nbsp}__E__ is:
169
170For the Linux kernel tracing domain (option:--kernel option)::
171 With the option:--tracepoint option or without any other instrumentation point type option:::
172 An LTTng kernel tracepoint, that is, a statically defined point
173 in the source code of the kernel image or of a kernel module
174 with LTTng kernel tracer macros.
175+
176As of LTTng{nbsp}{lttng_version}, this is the default instrumentation
177point type of the Linux kernel tracing domain, but this may change in
178the future.
179+
180List the available Linux kernel tracepoints with `lttng list --kernel`.
181See man:lttng-list(1) to learn more.
182
183 With the option:--syscall option:::
184 The entry and exit of a Linux kernel system call.
185+
186List the available Linux kernel system call instrumentation points with
187`lttng list --kernel --syscall`. See man:lttng-list(1) to learn more.
188
189 With the option:--probe option:::
190 A Linux kprobe, that is, a single probe dynamically placed in
191 the compiled kernel code.
192+
193The argument of the option:--probe option is the location of the
194kprobe to insert, either a symbol or a
195memory address, while 'RECORDNAME' is the name of the record
da39b67c 196of{nbsp}__E__ (see the ``<<er-name,Event record name>>'' section below).
484b2a0c
PP
197+
198The payload of a Linux kprobe event is empty.
199
200 With the option:--userspace-probe option:::
201 A Linux user space probe, that is, a single probe dynamically
202 placed at the entry of a compiled user space application/library
203 function through the kernel.
204+
205The argument of the option:--userspace-probe option is the location
206of the user space probe to insert, one of:
207+
208--
209* A path and symbol (ELF method).
210* A path, provider name, and probe name (SystemTap User-level Statically
211 Defined Tracing (USDT) method; a DTrace-style marker).
212+
213As of LTTng{nbsp}{lttng_version}, LTTng only supports USDT probes which
214are :not: reference-counted.
215--
216+
217'RECORDNAME' is the name of the record of{nbsp}__E__ (see the
da39b67c 218``<<er-name,Event record name>>'' section below).
484b2a0c
PP
219+
220The payload of a Linux user space probe event is empty.
221
222 With the option:--function option:::
223 A Linux kretprobe, that is, two probes dynamically placed at the
224 entry and exit of a function in the compiled kernel code.
225+
226The argument of the option:--function option is the location of the
227Linux kretprobe to insert, either a symbol or
228a memory address, while 'RECORDNAME' is the name of the record
da39b67c 229of{nbsp}__E__ (see the ``<<er-name,Event record name>>'' section below).
484b2a0c
PP
230+
231The payload of a Linux kretprobe event is empty.
232
233For the user space tracing domain (option:--userspace option)::
234 With or without the option:--tracepoint option:::
235 An LTTng user space tracepoint, that is, a statically defined
236 point in the source code of a C/$$C++$$ application/library with
237 LTTng user space tracer macros.
238+
239As of LTTng{nbsp}{lttng_version}, this is the default and sole
240instrumentation point type of the user space tracing domain, but this
241may change in the future.
242+
243List the available user space tracepoints with `lttng list --userspace`.
244See man:lttng-list(1) to learn more.
245
f1f15c35 246For the `java.util.logging` (option:--jul option), Apache 1.x log4j (option:--log4j option), Apache 2.x log4j (option:--log4j2 option), and Python (option:--python option) tracing domains::
484b2a0c
PP
247 With or without the option:--tracepoint option:::
248 A logging statement.
249+
250As of LTTng{nbsp}{lttng_version}, this is the default and sole
f1f15c35
MJ
251instrumentation point type of the `java.util.logging`, Apache Log4j 1.x, Apache
252log4j 2.x, and Python tracing domains, but this may change in the future.
484b2a0c
PP
253+
254List the available Java and Python loggers with `lttng list --jul`,
f1f15c35
MJ
255`lttng list --log4j`, `lttng list --log4j2`, and `lttng list --python`.
256See man:lttng-list(1) to learn more.
e9b06e2b 257
60f7980c 258
484b2a0c
PP
259[[event-name-cond]]
260Event name condition
261~~~~~~~~~~~~~~~~~~~~
262An event{nbsp}__E__ satisfies the event name condition of a recording
263event rule{nbsp}__ER__ if the two following statements are true:
e9b06e2b 264
484b2a0c
PP
265* You specify the option:--all option or, depending on the
266 instrumentation type condition (see the
da39b67c
PP
267 ``<<inst-point-type-cond,Instrumentation point type condition>>''
268 section above) of{nbsp}__ER__, 'NAME' matches:
484b2a0c
PP
269+
270--
271LTTng tracepoint::
272 The full name of the tracepoint from which LTTng creates{nbsp}__E__.
11613178 273+
484b2a0c
PP
274Note that the full name of a user space tracepoint is
275__PROVIDER__++:++__NAME__, where __PROVIDER__ is the tracepoint provider
276name and __NAME__ is the tracepoint name.
277
278Logging statement::
279 The name of the Java or Python logger from which LTTng
280 creates{nbsp}__E__.
e9b06e2b 281
484b2a0c
PP
282Linux system call::
283 The name of the system call, without any `sys_` prefix, from which
284 LTTng creates{nbsp}__E__.
285--
286
287* You don't specify the option:--exclude=__XNAME__[++,++__XNAME__]...
288 option or, depending on the instrumentation type condition
289 of{nbsp}__ER__, none of the 'XNAME' arguments matches the full name of
290 the user space tracepoint from which LTTng creates{nbsp}__E__.
11613178 291+
484b2a0c
PP
292The option:--exclude option is only available with the option:--userspace
293option.
294
295This condition is only meaningful for the LTTng tracepoint, logging
296statement, and Linux system call instrumentation point types: it's
297always satisfied for the other types.
298
299In all cases, 'NAME' and 'XNAME' are globbing patterns: the `*`
300character means ``match anything''. To match a literal `*` character,
301use :escwc:. To match a literal `,` character, use
302:esccomma:.
303
304IMPORTANT: Make sure to **single-quote** 'NAME' and 'XNAME' when they
305contain the `*` character and when you run the `enable-event` command
306from a shell.
307
308With the LTTng tracepoint, logging statement, and Linux system call
309instrumentation point types, the `enable-event` command creates or
310enables one independent recording event rule per 'NAME' argument
311(non-option, comma-separated). With the option:--all option, the
312`enable-event` command creates or enables a single recording event rule.
313
314
315[[inst-point-log-level-cond]]
316Instrumentation point log level condition
317~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
318An event{nbsp}__E__ satisfies the instrumentation point log level
319condition of a recording event rule if either:
320
321* The option:--loglevel and option:--loglevel-only options are
322 missing.
323
324* The log level of the LTTng user space tracepoint or logging statement
325 which creates{nbsp}__E__ is:
326 With the option:--loglevel='LOGLEVEL' option::
327 At least as severe as 'LOGLEVEL'.
328
329 With the option:--loglevel-only='LOGLEVEL' option::
330 Exactly 'LOGLEVEL'.
331
332This condition is only meaningful for the LTTng user space tracepoint
333and logging statement instrumentation point types: it's always satisfied
334for other types.
335
336The available values of 'LOGLEVEL' are, depending on the tracing domain,
337from the most to the least severe:
338
339User space (option:--userspace option)::
4fc37e3e
PP
340+
341* `EMERG` (0)
342* `ALERT` (1)
343* `CRIT` (2)
344* `ERR` (3)
345* `WARNING` (4)
346* `NOTICE` (5)
347* `INFO` (6)
348* `DEBUG_SYSTEM` (7)
349* `DEBUG_PROGRAM` (8)
350* `DEBUG_PROCESS` (9)
351* `DEBUG_MODULE` (10)
352* `DEBUG_UNIT` (11)
353* `DEBUG_FUNCTION` (12)
354* `DEBUG_LINE` (13)
355* `DEBUG` (14)
484b2a0c
PP
356
357`java.util.logging` (option:--jul option)::
4fc37e3e
PP
358+
359* `OFF` (`INT32_MAX`)
360* `SEVERE` (1000)
361* `WARNING` (900)
362* `INFO` (800)
363* `CONFIG` (700)
364* `FINE` (500)
365* `FINER` (400)
366* `FINEST` (300)
367* `ALL` (`INT32_MIN`)
484b2a0c 368
f1f15c35 369Apache Log4j 1.x (option:--log4j option)::
484b2a0c 370+
4fc37e3e
PP
371* `OFF` (`INT32_MAX`)
372* `FATAL` (50000)
373* `ERROR` (40000)
374* `WARN` (30000)
375* `INFO` (20000)
376* `DEBUG` (10000)
377* `TRACE` (5000)
378* `ALL` (`INT32_MIN`)
484b2a0c 379
f1f15c35
MJ
380Apache Log4j 2 (option:--log4j2 option)::
381+
382* `OFF` (`0`)
383* `FATAL` (100)
384* `ERROR` (200)
385* `WARN` (300)
386* `INFO` (400)
387* `DEBUG` (500)
388* `TRACE` (600)
389* `ALL` (`INT32_MAX`)
390
484b2a0c 391Python (option:--python option)::
4fc37e3e
PP
392+
393* `CRITICAL` (50)
394* `ERROR` (40)
395* `WARNING` (30)
396* `INFO` (20)
397* `DEBUG` (10)
398* `NOTSET` (0)
484b2a0c
PP
399
400
401[[filter-cond]]
402Event payload and context filter condition
403~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
404An event{nbsp}__E__ satisfies the event payload and context filter
405condition of a recording event rule if the option:--filter='EXPR'
406option is missing or if 'EXPR' is _true_.
407
4ccdbb61
PP
408This condition is only meaningful for the LTTng tracepoint and Linux
409system call instrumentation point types: it's always satisfied for other
410types.
411
484b2a0c
PP
412'EXPR' can contain references to the payload fields of{nbsp}__E__ and
413to the current context fields.
414
415IMPORTANT: Make sure to **single-quote** 'EXPR' when you run the
416`enable-event` command from a shell, as filter expressions typically
417include characters having a special meaning for most shells.
418
419The expected syntax of 'EXPR' is similar to the syntax of a
420C{nbsp}language conditional expression (an expression which an `if`
421statement can evaluate), but there are a few differences:
422
423* A _NAME_ expression identifies an event payload field named
424 _NAME_ (a C{nbsp}identifier).
425+
426Use the C{nbsp}language dot and square bracket notations to access
427nested structure and array/sequence fields. You can only use a constant,
428positive integer number within square brackets. If the index is out of
429bounds, 'EXPR' is _false_.
430+
431The value of an enumeration field is an integer.
432+
433When a field expression doesn't exist, 'EXPR' is _false_.
11613178
PP
434+
435Examples: `my_field`, `target_cpu`, `seq[7]`, `msg.user[1].data[2][17]`.
e9b06e2b 436
484b2a0c
PP
437* A ++$ctx.++__TYPE__ expression identifies the statically-known context
438 field having the type _TYPE_ (a C{nbsp}identifier).
439+
440List the available statically-known context field names with the
441man:lttng-add-context(1) command.
11613178 442+
484b2a0c 443When a field expression doesn't exist, 'EXPR' is _false_.
11613178
PP
444+
445Examples: `$ctx.prio`, `$ctx.preemptible`,
446`$ctx.perf:cpu:stalled-cycles-frontend`.
e9b06e2b 447
484b2a0c
PP
448* A ++$app.++__PROVIDER__++:++__TYPE__ expression identifies the
449 application-specific context field having the type _TYPE_ (a
450 C{nbsp}identifier) from the provider _PROVIDER_ (a C{nbsp}identifier).
11613178 451+
484b2a0c 452When a field expression doesn't exist, 'EXPR' is _false_.
11613178
PP
453+
454Example: `$app.server:cur_user`.
455
484b2a0c
PP
456* Compare strings, either string fields or string literals
457 (double-quoted), with the `==` and `!=` operators.
458+
459When comparing to a string literal, the `*` character means ``match
460anything''. To match a literal `*` character, use :escwc:.
461+
462Examples: `my_field == "user34"`, `my_field == my_other_field`,
463`my_field == "192.168.*"`.
11613178 464
484b2a0c
PP
465* The precedence table of the operators which are supported in 'EXPR'
466 is as follows. In this table, the highest precedence is{nbsp}1:
467+
11613178
PP
468[options="header"]
469|===
470|Precedence |Operator |Description |Associativity
471|1 |`-` |Unary minus |Right-to-left
472|1 |`+` |Unary plus |Right-to-left
473|1 |`!` |Logical NOT |Right-to-left
474|1 |`~` |Bitwise NOT |Right-to-left
475|2 |`<<` |Bitwise left shift |Left-to-right
476|2 |`>>` |Bitwise right shift |Left-to-right
477|3 |`&` |Bitwise AND |Left-to-right
478|4 |`^` |Bitwise XOR |Left-to-right
479|5 |`\|` |Bitwise OR |Left-to-right
480|6 |`<` |Less than |Left-to-right
481|6 |`<=` |Less than or equal to |Left-to-right
482|6 |`>` |Greater than |Left-to-right
483|6 |`>=` |Greater than or equal to |Left-to-right
484|7 |`==` |Equal to |Left-to-right
485|7 |`!=` |Not equal to |Left-to-right
486|8 |`&&` |Logical AND |Left-to-right
487|9 |`\|\|` |Logical OR |Left-to-right
488|===
484b2a0c
PP
489+
490Parentheses are supported to bypass the default order.
491+
492IMPORTANT: Unlike the C{nbsp}language, the bitwise AND and OR operators
493(`&` and `|`) in 'EXPR' take precedence over relational operators (`<`,
494`<=`, `>`, `>=`, `==`, and `!=`). This means the expression `2 & 2 == 2`
495is _true_ while the equivalent C{nbsp}expression is _false_.
496+
11613178 497The arithmetic operators are :not: supported.
484b2a0c
PP
498+
499LTTng first casts all integer constants and fields to signed 64-bit
11613178
PP
500integers. The representation of negative integers is two's complement.
501This means that, for example, the signed 8-bit integer field 0xff (-1)
502becomes 0xffffffffffffffff (still -1) once casted.
484b2a0c
PP
503+
504Before a bitwise operator is applied, LTTng casts all its operands to
505unsigned 64-bit integers, and then casts the result back to a signed
50664-bit integer. For the bitwise NOT operator, it's the equivalent of
507this C{nbsp}expression:
508+
11613178
PP
509[source,c]
510----
511(int64_t) ~((uint64_t) val)
512----
484b2a0c
PP
513+
514For the binary bitwise operators, it's the equivalent of those
515C{nbsp}expressions:
516+
11613178
PP
517[source,c]
518----
519(int64_t) ((uint64_t) lhs >> (uint64_t) rhs)
520(int64_t) ((uint64_t) lhs << (uint64_t) rhs)
521(int64_t) ((uint64_t) lhs & (uint64_t) rhs)
522(int64_t) ((uint64_t) lhs ^ (uint64_t) rhs)
523(int64_t) ((uint64_t) lhs | (uint64_t) rhs)
524----
484b2a0c 525+
11613178 526If the right-hand side of a bitwise shift operator (`<<` and `>>`) is
484b2a0c 527not in the [0,{nbsp}63] range, then 'EXPR' is _false_.
e9b06e2b 528
484b2a0c
PP
529[NOTE]
530====
531Use the man:lttng-track(1) and man:lttng-untrack(1) commands to allow or
532disallow processes to record LTTng events based on their attributes
533instead of using equivalent statically-known context fields in 'EXPR'
534like `$ctx.pid`.
e9b06e2b 535
484b2a0c
PP
536The former method is much more efficient.
537====
538
539'EXPR' examples:
e9b06e2b
PP
540
541----------------------------
542msg_id == 23 && size >= 2048
543----------------------------
544
545-------------------------------------------------
546$ctx.procname == "lttng*" && (!flag || poel < 34)
547-------------------------------------------------
548
549---------------------------------------------------------
550$app.my_provider:my_context == 17.34e9 || some_enum >= 14
551---------------------------------------------------------
552
c52365cc
PP
553---------------------------------------
554$ctx.cpu_id == 2 && filename != "*.log"
555---------------------------------------
f69e7997 556
11613178
PP
557------------------------------------------------
558eax_reg & 0xff7 == 0x240 && x[4] >> 12 <= 0x1234
559------------------------------------------------
560
e9b06e2b 561
484b2a0c
PP
562[[er-name]]
563Event record name
564~~~~~~~~~~~~~~~~~
565When LTTng records an event{nbsp}__E__, the resulting event record has a
566name which depends on the instrumentation point type condition (see the
da39b67c
PP
567``<<inst-point-type-cond,Instrumentation point type condition>>''
568section above) of the recording event rule which matched{nbsp}__E__:
e9b06e2b 569
484b2a0c
PP
570LTTng tracepoint (option:--kernel/option:--userspace and option:--tracepoint options)::
571 Full name of the tracepoint from which LTTng creates{nbsp}__E__.
e9b06e2b 572+
484b2a0c
PP
573Note that the full name of a user space tracepoint is
574__PROVIDER__++:++__NAME__, where __PROVIDER__ is the tracepoint provider
575name and __NAME__ is the tracepoint name.
e9b06e2b 576
484b2a0c
PP
577`java.util.logging` logging statement (option:--jul and option:--tracepoint options)::
578 `lttng_jul:event`
e9b06e2b 579+
484b2a0c
PP
580Such an event record has a string field `logger_name` which contains the
581name of the `java.util.logging` logger from which LTTng
582creates{nbsp}__E__.
e9b06e2b 583
f1f15c35 584Apache Log4j 1.x logging statement (option:--log4j and option:--tracepoint options)::
484b2a0c 585 `lttng_log4j:event`
e9b06e2b 586+
484b2a0c 587Such an event record has a string field `logger_name` which contains the
f1f15c35
MJ
588name of the Apache Log4j 1.x logger from which LTTng creates{nbsp}__E__.
589
590Apache Log4j 2 logging statement (option:--log4j2 and option:--tracepoint options)::
591 `lttng_log4j2:event`
592+
593Such an event record has a string field `logger_name` which contains the
594name of the Apache Log4j 2 logger from which LTTng creates{nbsp}__E__.
e9b06e2b 595
484b2a0c
PP
596Python logging statement (option:--python and option:--tracepoint options)::
597 `lttng_python:event`
e9b06e2b 598+
484b2a0c
PP
599Such an event record has a string field `logger_name` which contains the
600name of the Python logger from which LTTng creates{nbsp}__E__.
601
602Linux system call (option:--kernel and option:--syscall options)::
603 Entry:::
604 ++syscall_entry_++__NAME__, where _NAME_ is the name of the
605 system call from which LTTng creates{nbsp}__E__, without any
606 `sys_` prefix.
607
608 Exit:::
609 ++syscall_exit_++__NAME__, where _NAME_ is the name of the
610 system call from which LTTng creates{nbsp}__E__, without any
611 `sys_` prefix.
612
613Linux kprobe (option:--kernel and option:--probe options)::
614Linux user space probe (option:--kernel and option:--userspace-probe options)::
615 'RECORDNAME' (first non-option argument).
e9b06e2b 616
484b2a0c
PP
617Linux kretprobe (option:--kernel and option:--function options)::
618 Entry:::
619 __RECORDNAME__++_entry++
e9b06e2b 620
484b2a0c
PP
621 Exit:::
622 __RECORDNAME__++_exit++
b981f450 623
b981f450 624
484b2a0c
PP
625[[enable]]
626Enable a disabled recording event rule
627~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
26f0c779
PP
628The `enable-event` command can enable a disabled recording event rule,
629as listed in the output of the man:lttng-list(1) command.
484b2a0c
PP
630
631You may enable a disabled recording event rule regardless of the
e9711845 632activity (started or stopped) of its recording session (see
484b2a0c
PP
633man:lttng-start(1) and man:lttng-stop(1)).
634
635To enable a disabled recording event rule, run the `enable-event`
636command with the exact same options and arguments that you used to
637create it. In particular, with the option:--filter='EXPR' option, 'EXPR'
638must be the exact same string as the one you used on creation.
b981f450 639
b981f450 640
f5511eea 641include::common-lttng-cmd-options-head.txt[]
fa72991a
PP
642
643
484b2a0c
PP
644Tracing domain
645~~~~~~~~~~~~~~
fa72991a
PP
646One of:
647
648option:-j, option:--jul::
484b2a0c
PP
649 Create or enable recording event rules in the `java.util.logging`
650 (JUL) tracing domain.
fa72991a
PP
651
652option:-k, option:--kernel::
484b2a0c
PP
653 Create or enable recording event rules in the Linux kernel tracing
654 domain.
fa72991a
PP
655
656option:-l, option:--log4j::
f1f15c35
MJ
657 Create or enable recording event rules in the Apache Log4j 1.x tracing
658 domain.
659
660option:--log4j2::
661 Create or enable recording event rules in the Apache Log4j 2 tracing
484b2a0c 662 domain.
fa72991a
PP
663
664option:-p, option:--python::
484b2a0c 665 Create or enable recording event rules in the Python tracing domain.
fa72991a
PP
666
667option:-u, option:--userspace::
484b2a0c
PP
668 Create or enable recording event rules in the user space tracing
669 domain.
fa72991a
PP
670
671
484b2a0c
PP
672Recording target
673~~~~~~~~~~~~~~~~
fa72991a 674option:-c 'CHANNEL', option:--channel='CHANNEL'::
484b2a0c
PP
675 Create or enable recording event rules attached to the channel named
676 'CHANNEL' instead of `channel0`.
fa72991a
PP
677
678option:-s 'SESSION', option:--session='SESSION'::
e9711845
PP
679 Create or enable recording event rules in the recording session
680 named 'SESSION' instead of the current recording session.
fa72991a
PP
681
682
484b2a0c
PP
683Instrumentation point type condition
684~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
da39b67c
PP
685See the ``<<inst-point-type-cond,Instrumentation point type
686condition>>'' section above.
fa72991a 687
484b2a0c
PP
688At most one of:
689
690option:--function='LOC'::
691 Only match Linux kretprobe events.
692+
693Only available with the option:--kernel option.
694+
695'LOC' is one of:
fa72991a 696+
484b2a0c
PP
697--
698* A function address (`0x` hexadecimal prefix supported).
699* A function symbol name.
700* A function symbol name and an offset
701 (__SYMBOL__++pass:[+]++__OFFSET__ format).
702--
703+
704You must specify the event record name with 'RECORDNAME'. See the
da39b67c 705``<<er-name,Event record name>>'' section above to learn more.
fa72991a 706
484b2a0c
PP
707option:--probe='LOC'::
708 Only match Linux kprobe events.
709+
710Only available with the option:--kernel option.
711+
712'LOC' is one of:
713+
714--
715* An address (`0x` hexadecimal prefix supported).
716* A symbol name.
717* A symbol name and an offset (__SYMBOL__++pass:[+]++__OFFSET__ format).
718--
fa72991a 719+
484b2a0c 720You must specify the event record name with 'RECORDNAME'. See the
da39b67c 721``<<er-name,Event record name>>'' section above to learn more.
fa72991a 722
484b2a0c
PP
723option:--userspace-probe='LOC'::
724 Only match Linux user space probe events.
fa72991a 725+
484b2a0c
PP
726Only available with the option:--kernel option.
727+
728'LOC' is one of:
fa72991a
PP
729+
730--
731\[++elf:++]__PATH__++:++__SYMBOL__::
484b2a0c
PP
732 Probe an available symbol within a user space application or
733 library.
b981f450
PP
734+
735--
736'PATH'::
737 Application or library path.
738+
484b2a0c 739One of:
b981f450
PP
740+
741* An absolute path.
742* A relative path.
484b2a0c 743* The name of an application as found in the directories listed in the
b981f450
PP
744 `PATH` environment variable.
745
746'SYMBOL'::
747 Symbol name of the function of which to instrument the entry.
748+
484b2a0c
PP
749'SYMBOL' can be any defined code symbol in the output of the man:nm(1)
750command, including with its nloption:--dynamic option, which lists
751dynamic symbols.
b981f450
PP
752--
753+
484b2a0c
PP
754As of LTTng{nbsp}{lttng_version}, not specifying `elf:` is equivalent to
755specifying it, but this default may change in the future.
b981f450
PP
756+
757Examples:
758+
759* `--userspace-probe=/usr/lib/libc.so.6:malloc`
760* `--userspace-probe=./myapp:createUser`
484b2a0c 761* `--userspace-probe=elf:httpd:ap_run_open_htaccess`
b981f450 762
fa72991a 763++sdt:++__PATH__++:++__PROVIDER__++:++__NAME__::
484b2a0c
PP
764 Use a SystemTap User-level Statically Defined Tracing (USDT) probe
765 within a user space application or library.
b981f450
PP
766+
767--
768'PATH'::
769 Application or library path.
770+
771This can be:
772+
773* An absolute path.
774* A relative path.
484b2a0c 775* The name of an application as found in the directories listed in the
b981f450
PP
776 `PATH` environment variable.
777
484b2a0c
PP
778'PROVIDER'::
779'NAME'::
0e63136b 780 USDT provider and probe names.
b981f450 781+
0e63136b 782For example, with the following USDT probe:
b981f450
PP
783+
784[source,c]
785----
786DTRACE_PROBE2("server", "accept_request",
787 request_id, ip_addr);
788----
789+
790The provider/probe name pair is `server:accept_request`.
791--
792+
484b2a0c 793Example: `--userspace-probe=sdt:./build/server:server:accept_request`
fa72991a 794--
484b2a0c
PP
795+
796You must specify the event record name with 'RECORDNAME'. See the
da39b67c 797``<<er-name,Event record name>>'' section above to learn more.
b981f450 798
e9b06e2b 799option:--syscall::
484b2a0c
PP
800 Only match Linux system call events.
801+
802Only available with the option:--kernel option.
e9b06e2b
PP
803
804option:--tracepoint::
484b2a0c
PP
805 Only match:
806+
807With the option:--kernel or option:--userspace option:::
808 LTTng tracepoint events.
f1f15c35 809With the option:--jul, option:--log4j, option:--log4j2, or option:--python option:::
484b2a0c 810 Logging events.
e9b06e2b 811
484b2a0c
PP
812With the option:--kernel, not specifying any of the instrumentation
813point type options is equivalent to specifying the option:--tracepoint
814option, but this default may change in the future.
e9b06e2b 815
f1f15c35 816With the option:--userspace, option:--jul, option:--log4j, option:--log4j2, and
484b2a0c
PP
817option:--python options, not specifying the option:--tracepoint option
818is equivalent to specifying it, but this default may change in the
819future.
820
821
822Event name condition
823~~~~~~~~~~~~~~~~~~~~
da39b67c 824See the ``<<event-name-cond,Event name condition>>'' section above.
484b2a0c
PP
825
826option:-a, option:--all::
827 Equivalent to a single 'NAME' argument (LTTng tracepoint or logger
828 name) set to `*` (match anything).
829+
830You may :not: use this option with a 'NAME' argument.
831
832option:-x 'XNAME'[,'XNAME']..., option:--exclude='XNAME'[,'XNAME']...::
833 Only match events of which none of the 'XNAME' arguments
834 matches the full name of the LTTng user space tracepoint.
835+
836Only available with the option:--userspace option.
837+
838'XNAME' is a globbing pattern: the `*` character means ``match
839anything''. To match a literal `*` character, use :escwc:. To match
840a literal `,` character, use :esccomma:.
841
842
843Instrumentation point log level condition
844~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
da39b67c
PP
845See the ``<<inst-point-log-level-cond,Instrumentation point log level
846condition>>'' section above.
484b2a0c
PP
847
848At most one of:
e9b06e2b
PP
849
850option:--loglevel='LOGLEVEL'::
484b2a0c
PP
851 Only match events of which the log level of the LTTng tracepoint or
852 logging statement is at least as severe as 'LOGLEVEL'.
e9b06e2b
PP
853
854option:--loglevel-only='LOGLEVEL'::
484b2a0c
PP
855 Only match events of which the log level of the LTTng tracepoint or
856 logging statement is exactly 'LOGLEVEL'.
e9b06e2b 857
484b2a0c
PP
858The instrumentation point log level options above are :not: available
859with the option:--kernel option.
e9b06e2b
PP
860
861
484b2a0c
PP
862Event payload and context filter condition
863~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
da39b67c 864See the ``<<filter-cond,Event payload and context filter condition>>''
484b2a0c
PP
865section above.
866
867option:-f 'EXPR', option:--filter='EXPR'::
868 Only match events of which 'EXPR', which can contain references to
869 event payload and current context fields, is _true_.
4ccdbb61
PP
870+
871This option is only available with the option:--tracepoint or
872option:--syscall option.
e9b06e2b
PP
873
874
f5511eea 875include::common-lttng-cmd-help-options.txt[]
e9b06e2b
PP
876
877
f5511eea
PP
878include::common-lttng-cmd-after-options.txt[]
879
880
4414cae9
PP
881[[examples]]
882EXAMPLES
883--------
e9711845 884.Create a recording event rule which matches all Linux system call events (current recording session, default channel).
4414cae9
PP
885====
886See the option:--all and option:--syscall options.
887
888[role="term"]
889----
890$ lttng enable-event --kernel --all --syscall
891----
892====
893
e9711845 894.Create a recording event rule which matches user space tracepoint events named specifically (current recording session, default channel).
4414cae9
PP
895====
896The recording event rule below matches all user space tracepoint events
897of which the name starts with `my_provider:msg`.
898
899[role="term"]
900----
901$ lttng enable-event --userspace 'my_provider:msg*'
902----
903====
904
e9711845 905.Create three recording event rules which match Python logging events named specifically (current recording session, default channel).
4414cae9
PP
906====
907[role="term"]
908----
909$ lttng enable-event --python server3,ui.window,user-mgmt
910----
911====
912
f1f15c35 913.Create a recording event rule which matches Apache Log4j 1.x logging events with a specific log level range (current recording session, specific channel).
4414cae9
PP
914====
915See the option:--channel, option:--all, and option:--loglevel options.
916
917[role="term"]
918----
919$ lttng enable-event --log4j --channel=my-loggers \
920 --all --loglevel=INFO
921----
922====
923
f1f15c35
MJ
924.Create a recording event rule which matches Apache Log4j 2 logging events with a specific log level range (current recording session, specific channel).
925====
926See the option:--channel, option:--all, and option:--loglevel options.
927
928[role="term"]
929----
930$ lttng enable-event --log4j2 --channel=my-loggers \
931 --all --loglevel=INFO
932----
933====
934
e9711845 935.Create a recording event rule which matches specific Linux kprobe events (current recording session, default channel).
4414cae9
PP
936====
937The recording event rule below matches the entry of `usb_disconnect()`
938Linux kernel function calls. The records of such events are named `usbd`
da39b67c 939(see the ``<<er-name,Event record name>>'' section above).
4414cae9
PP
940
941See the option:--probe option.
942
943[role="term"]
944----
945$ lttng enable-event --kernel --probe=usb_disconnect usbd
946----
947====
948
e9711845 949.Create a recording event rule which matches Linux kernel tracepoint events which satisfy an event payload and context filter (specific recording session, default channel).
4414cae9
PP
950====
951See the option:--session and option:--filter options.
952
953[role="term"]
954----
955$ lttng enable-event --kernel --session=my-session 'sched_*' \
956 --filter='$ctx.preemptible && comm != "systemd*"'
957----
958====
959
e9711845 960.Enable two Linux kernel tracepoint recording event rules (current recording session, specific channel).
4414cae9
PP
961====
962See the option:--channel option.
963
964[role="term"]
965----
966$ lttng enable-event --kernel --channel=tva ja,wendy
967----
968====
969
970
f5511eea 971include::common-footer.txt[]
e9b06e2b
PP
972
973
974SEE ALSO
975--------
484b2a0c 976man:lttng(1),
7c1a4458 977man:lttng-disable-event(1),
484b2a0c
PP
978man:lttng-enable-channel(1),
979man:lttng-list(1),
980man:lttng-start(1),
af1c4164
PP
981man:lttng-track(1),
982man:lttng-concepts(7)
This page took 0.096016 seconds and 4 git commands to generate.