Como se sabe, podemos redirecionar os erros para um arquivo específico com:
./some_script 2>error_log
Estou executando vários scripts e gostaria que eles colocassem seus erros em um único arquivo de erro.
Existe alguma maneira de anexar informações, como nome do script, na frente de cada instância de erro? Dessa forma, o log de erros pode anotar, por exemplo, o nome do script que está postando o erro etc.
Crie uma função de log de erros para seus scripts. Algo como:
Então você chama isso de seus scripts como:
O uso
2>error_log
também substituiráerror_log
todas as vezes. Você precisa usar2>>error_log
para anexar.Se você quiser capturar erros de outros comandos e registrá-los, você pode hackear algo assim:
Garantindo que você redirecione o stdout para qualquer local aplicável em que você precise.
Isso permitirá que o
logerr
script leia do stdin se estiver aberto (permitindo que você insira programas no logerr). O problema é que os programas enviarão mensagens de erro para o stderr e você deseja que ele permaneça separado do stdin.Construído sobre a discussão aqui mais isto:
https://stackoverflow.com/questions/2342826/how-to-pipe-stderr-and-not-stdout
Para adicionar o que quisermos. Precisamos ser capazes de canalizar o fluxo de erro (fd2). A única saída pipeável é fd1. Portanto, fd2 precisa ser redirecionado para fd1. Também devemos nos livrar de fd1 para que não atrapalhe.