
Recentemente descobri sobre /usr/bin/logger e achei muito bom.
Percebi que ele contém um argumento de prioridade (-p) (facility.info, facilities.alert, etc.).
Então, se eu quiser logar apenas stdin, faço assim:
stuff | logger -p cron.info
Para logar apenas stderr, desta forma:
stuff 2>&1 > /dev/null | logger -p cron.err
Para registrar stdout e stderr :
stuff 2> >(logger -p cron.err) | logger -p cron.info
Gostaria de saber se existe uma maneira mais concisa de fazer isso, para evitar copiar e colar.
Existe uma maneira de conseguir esse tipo de coisa?
logging -F cron -s info -e err stuff
Muito obrigado
Responder1
Isso seria muito fácil se a sintaxe desejada fosse
logging cron info err stuff
Nesse caso use a seguinte função:
logging() {
if [ "$#" -lt 4 ]; then
echo "Too few arguments." >&2
return 1
else
local prefix postfix1 postfix2
prefix="$1"
postfix1="$2"
postfix2="$3"
shift 3
"$@" 2> >(logger -p "$prefix.$postfix2") | logger -p "$prefix.$postfix1"
fi
}
Notas:
- Você pode criar um script independente.
- A análise
-F
,-s
,-e
é possível, embora não tão simples quanto acimaBEIJO-y abordagem.