Se puede utilizar un contexto opcional en las macros de usuario, permitiendo reemplazar el valor predeterminado por uno espec¨ªfico del contexto.
El contexto se a?ade 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 s¨®lo se puede definir en la 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 iniciador, se tratar¨¢ como contexto est¨¢tico.
Las comillas contextuales son opcionales (ver tambi¨¦n las notas importantes).
Ejemplos de macros con 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:
No cree macros de contexto diferentes que coincidan con la misma cadena para evitar un comportamiento indefinido.
T¨¦cnicamente, el contexto macro se especifica mediante reglas similares a los par¨¢metros de la clave de m¨¦trica, excepto que el contexto macro no se analiza como varios par¨¢metros si hay un car¨¢cter ,
:
"
si el contexto contiene el car¨¢cter }
o comienza con un car¨¢cter "
. Las comillas dentro de un contexto entrecomillado deben tener como escape el car¨¢cter \
.\
en s¨ª no tiene escape, lo que significa que es imposible tener un contexto entre comillas que termine con el car¨¢cter \
- la macro {$MACRO:"a:\b\c\"} no es v¨¢lida.Las siguientes macros son todas equivalentes porque tienen el mismo contexto: {$MACRO:A}, {$MACRO: A} y {$MACRO:"A"}. Esto es en contraste con las claves de m¨¦tricas, donde 'key[a]', 'key[ a]' y 'key["a"]' son lo mismo sem¨¢nticamente, pero diferente a efectos de unicidad.