Ver Feed RSS

zenun

Usando syslog em shell script com logger

Avalie este Post de Blog
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:

Código :
[FONT=Courier New]*, auth, authpriv, cron, daemon, ftp, kern, local0-7, lpr, mail, mark, news, syslog, user[/FONT]
E cada um desses recursos possuem vários níveis de severidade que são:

Código :
[FONT=Courier New]emerg, alert, crit, err, warning, notice, info, debug[/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]local5.* /var/log/andrelog.log[/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]#!/bin/bash
 
    logger -t $0 -p local5.warning "teste syslog em shell script"[/FONT]
A saida no arquivo de log mencionado anteriormente é:

Código :
Aug 26 09:29:40 debiandre testeScript.sh: teste syslog em shell script
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!

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!

Atualizado 26-08-2008 em 20:16 por zenun

Categorias
shell-script

Comentários


+ Enviar Comentário