Usando syslog em shell script com logger
por
em 26-08-2008 às 19:50 (4944 Visualizações)
Até pouco tempo atrás em meus scripts shell para ter algum tipo de log das ações que ele estava executando sempre utilizava o comando echo seguido dos redirecionadores de concatenação a um determinado arquivo em algum lugar do sistema de arquivos, geralmente em /var/log.
Não é uma forma muito elegante mas concerteza funciona muito bem e imagino que essa é uma forma bastante utilizada por todos que necessitam as vezes criar algum script shell! Pois bem, procurando e lendo em alguns livros me deparei com um programa que até então não o conhecia; o nome desse aplicativo é logger e com ele é possível interagir com o syslog do sistema permitindo ao seu script logar as ações de forma muito mais profissional.
Mas antes de entrarmos para falar desse programa, vamos mostrar um pouquinho de syslog! O syslog é usado pelo sistema para gerenciar os logs gerados pelos programas instalados, autenticações, o boot do sistema operacional, mensagens do kernel entre outros. O syslog possui divisões que facilitam identificar o que irá para cada arquivo como esta descrito abaixo:
E cada um desses recursos possuem vários níveis de severidade que são:Código :[FONT=Courier New]*, auth, authpriv, cron, daemon, ftp, kern, local0-7, lpr, mail, mark, news, syslog, user[/FONT]
A que nos interessa agora é a local0-7! Estes estão destinados para serem utilizados pelo usuário em scripts e por programas que permitem mudar seu sistema de logs para o syslog, como o FreeRadius, por exemplo! Como havia dito, o recurso syslog que nos interessa é o local0-7! Com ele é possível definir que seu script envie mensagens de log para um arquivo especifico usando os recursos de log do sistema! Para que seja possível usar os recursos local0 a local7 é necessário configurar o arquivo /etc/syslog.conf adicionando a seguinte linha e reiniciar o daemon:Código :[FONT=Courier New]emerg, alert, crit, err, warning, notice, info, debug[/FONT]
Com isso estarei configurando o recurso local5 para enviar todas suas mensagens no arquivo de log /var/log/andrelog.log. Porém para que isso seja usado por um script shell é necessário o uso do programa logger! Observe o script abaixo:Código :[FONT=Courier New]local5.* /var/log/andrelog.log[/FONT]
A saida no arquivo de log mencionado anteriormente é:Código :[FONT=Courier New]#!/bin/bash logger -t $0 -p local5.warning "teste syslog em shell script"[/FONT]
Neste comando do logger eu utilizei dois parâmetros que foram o -t e o -p. O primeiro (-t) me permite adicionar um tag (marcação) a mensagem, que nesse caso eu coloquei a variável $0 que em shell script é o nome do script, e o segundo (-p) me permite definir o recurso do syslog que desejo utilizar, sua severidade e a mensagem que quero enviar. Com isso o syslog já se encarrega de escrever no arquivo de log colocando essas mensagens e a data da execução!Código :Aug 26 09:29:40 debiandre testeScript.sh: teste syslog em shell script
Com este exemplo é possível imaginar uma variedade de formas para utilizar o logger em um shell script, substituindo a forma tradicional para criar logs! Ainda é possível utilizar uma outra funcionalidade do syslog que é a de enviar os logs para um servidor remoto, sendo possivel assim a centralização desses arquivos! Mas isso pode ser uma outra dica para um outro post!
Este mesmo post esta em meu blog pessoal no seguinte endereço: Yet Another Linux Blog: Usando syslog em shell script com logger
Espero que essa dica seja útil para vocês como foi para mim!
Comentários
+ Enviar Comentário