Em um ponto, eu precisava enviar com precisão os eventos de log do Cygwin para o log de eventos do Windows. Eu queria que as mensagens no WEVL fossem personalizadas, tivessem o código de saída correto, detalhes, prioridades, mensagem, etc. Então, criei um pequeno script Bash para cuidar disso. Aqui está no GitHub, logit.sh .
Alguns trechos:
usage: logit.sh [-h] [-p] [-i=n] [-s] <description>
example: logit.sh -p error -i 501 -s myscript.sh "failed to run the mount command"
Aqui está a parte do conteúdo do arquivo temporário:
LGT_TEMP_FILE="$(mktemp --suffix .cmd)"
cat<<EOF>$LGT_TEMP_FILE
@echo off
set LGT_EXITCODE="$LGT_ID"
exit /b %LGT_ID%
EOF
unix2dos "$LGT_TEMP_FILE"
Aqui está uma função para criar eventos no WEVL:
__create_event () {
local cmd="eventcreate /ID $LGT_ID /L Application /SO $LGT_SOURCE /T $LGT_PRIORITY /D "
if [[ "$1" == *';'* ]]; then
local IFS=';'
for i in "$1"; do
$cmd "$i" &>/dev/null
done
else
$cmd "$LGT_DESC" &>/dev/null
fi
}
Executando o script em lote e chamando __create_event:
cmd /c "$(cygpath -wa "$LGT_TEMP_FILE")"
__create_event