Conditional statements
A conditional statement ( if (expr) { ... } elif (expr) {} else { ... };) allows you to evaluate complex decision trees. For example:
if (${PRI} == "alert") {
event.severity = 1;
} elif (${PRI} == "critical") {
event.severity = 2;
} elif (${PRI} == "error") {
event.severity = 3;
} elif (${PRI} == "warning") {
event.severity = 4;
} elif (${PRI} == "notice") {
event.severity = 5;
} elif (${PRI} == "information") {
event.severity = 6;
} else {
event.severity = 7;
};
Starting with version 4.10, you can also use switch-case expressions. Switch-case expressions allow you to better organize the code instead of using multiple if, elif, else blocks. Using switch-case expressions also improves performance.
Usage:
switch (<expression-or-variable>) {
case "literal-string1":
...
break;
case "literal-string2":
...
break;
case <expression>:
...
break;
default:
...
break;
};
For example:
switch ($MESSAGE) {
case "foobar":
$MESSAGE = "literal-case";
break;
case any_expression:
$MESSAGE = "variable-case";
break;
default:
$MESSAGE = "default";
break;
};
Note that:
- Cases with literal string targets are stored in a map, and the lookup is started with them.
- Case targets can contain any expressions, and they are evaluated in order.
- Literal string and default target duplications are checked and will cause init failure. Non-literal expression targets are not checked, and only the first matching case will be executed.
Last modified February 12, 2026: Adds an example for filterx elif (c7b50da)