#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 | ¶Ù±ð²õ³¦°ù¾±±è³¦¾±¨®²Ô |
---|---|
{$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.