
Recientemente descubrí /usr/bin/logger y lo encuentro muy bueno.
Noté que contiene un argumento de prioridad (-p) (facility.info, facility.alert, etc.).
Entonces, si quiero iniciar sesión solo en stdin, lo hago de esa manera:
stuff | logger -p cron.info
Para iniciar sesión simplemente stderr, de esa manera:
stuff 2>&1 > /dev/null | logger -p cron.err
Para registrar tanto stdout como stderr:
stuff 2> >(logger -p cron.err) | logger -p cron.info
Me pregunto si hay una forma más concisa de hacer esto para evitar copiar y pegar.
¿Hay alguna manera de lograr ese tipo de cosas?
logging -F cron -s info -e err stuff
Muchas gracias
Respuesta1
Esto sería bastante fácil si la sintaxis deseada fuera
logging cron info err stuff
En tal caso utilice la siguiente función:
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:
- En su lugar, puede crear un script independiente.
- Analizar
-F
, es posible, aunque no tan sencillo como el anterior-s
.-e
BESO-y enfoque.