#3 Macros de usuario con contexto
Se puede usar un contexto opcional en usuario macros, lo que permite anular el valor predeterminado con uno específico del contexto.
El contexto se agrega al nombre de la macro; la sintaxis depende de si el contexto es un valor de texto estático:
o una expresión regular:
Tenga en cuenta que una macro con contexto de expresión regular solo se puede definir en configuración de macros de usuario. Si el prefijo regex:
se usa en otro lugar como contexto de macro de usuario, como en una expresión de activación, se tratará como contexto estático.
Las citas contextuales son opcionales (ver también important notas).
Ejemplos de macro contexto:
Ejemplo | Descripción |
---|---|
{$LOW_SPACE_LIMIT} |
Macro de usuario sin contexto. |
{$LOW_SPACE_LIMIT:/tmp} |
Macro de usuario con contexto (cadena estática). |
{$LOW_SPACE_LIMIT:regex:"^/tmp$"} |
Macro de usuario con contexto (expresión regular). Igual que {$LOW_SPACE_LIMIT:/tmp} . |
{$LOW_SPACE_LIMIT:regex:"^/var/log/.*$"} |
Macro de usuario con contexto (expresión regular). Coincide con todas las cadenas con el prefijo /var/log/. |
Se pueden definir macros de usuario con contexto para lograr umbrales más flexibles en expresiones de activación (según los valores recuperados por la detección de bajo nivel). Por ejemplo, puede definir las siguientes macros:
Luego, se puede utilizar una macro de detección de bajo nivel como contexto de macro en un prototipo de iniciador para la detección de sistemas de archivos montados:
last(/host/vfs.fs.size[{#FSNAME},pfree])<{$LOW_SPACE_LIMIT:"{#FSNAME}"}
Después de la detección, se aplicarán diferentes umbrales de espacio reducido en los iniciadores según los puntos de montaje o los tipos de sistemas de archivos detectados. Se generarán eventos problemáticos si:
::: nota de advertencia No cree macros de contexto diferentes que coincidan con el misma cadena para evitar un comportamiento indefinido. :::
Técnicamente, el contexto macro se especifica usando reglas similares a item key parámetros, excepto que el contexto macro es no se analiza como varios parámetros si hay un carácter ,
:
"
si el contexto contiene un }
o comienza con un carácter "
. Comillas dentro de comillas El contexto debe escaparse con el carácter \
.\
en sí mismo no se escapa, lo que significa que es imposible tener un contexto citado que termine con el carácter \
- la macro {$MACRO:"a:\b\c\"} no es válido.Las siguientes macros son todas equivalentes, porque tienen el mismo contexto: {$MACRO:A}, {$MACRO: A} y {$MACRO:"A"}. esto es en contraste con claves de elemento, donde 'clave[a]', 'clave[ a]' y 'clave["a"]' son las mismo semánticamente, pero diferente para propósitos de unicidad.