Scripts e programas geram seus proprios logs.
O Linux trabalha com um gerenciador de logs, o rsyslog ou syslog.
script.sh >> log.out
Assim toda saída desse script será jogada neste arquivo de log e não tem saída na tela.
script.sh >> log.out 2>&1
Direcionamos a saída normal e a saída de erro para o mesmo arquivo.
Para jogar os logs em um arquivo e na saída de tela
script.sh | tee -a log.out
Dentro do script, no inicio colocamos oseguinte código para tudo ser direcionado para o arquivo de log
LOG="$HOME/log.out"
exec 1>> $LOG
exec 2>>&1
Usando processor substituto
exec 1>> >(tee -a "$LOG")
/etc/rsyslog.d
Pasta onde ficar as configurações
50-default.conf
Arquivo dos logs principais do linux
Ai temos o Facility e a Priority
Facility = O criador da mensagem
auth, authpriv, cron, daemon, kern, lpr, mail, mark, new, security, syslog, user, uucp
e local0 ate local7
Priority = Urgêrcia /Importancia da mensagem
debug, info, notice, warning, warn, err, error, crit, alert, emerg, panic
Exemplo configurado no arquivo
mail.* -/var/log/mail.log
Esse * siginifica todas as prioridade, podiamos ter mail.info
para uma determinada prioridade
Vamos criar um arquivo nesta pasta scripts.conf
Colocamos:
local0.* -/var/log/scripts.log
Estamos associando o local0 para um arquivo de log, podemos usar local0
ate local7
para nossos facility customizados.
Depois precisamos reiniciar rsyslog
systemctl restart rsyslog
ps aux | grep rsyslog
Para conferir a data de inicialização do rsyslog
O /var/log/scripts.log
deve ter dono/grupo syslog:adm
, ele será criado automaticamente.
Para criar um log para o syslog tratar
logger -p local0.err "teste de mensagem de log"
logger -p local0.err -t [TAGPARAAJUDAR] "teste de mensagem de log"
Em nosso script podemos colocar:
echo "Inicializando script" | logger -p local0.warn -t [$0]
ou logger -p local0.war -t [$0] "Inicializando script"
Para mandar um log para tela e para o arquivo do comando sort $ALUNOS
sort $ALUNOS | tee -a >(logger -p local0.warn -t [$0])