p>logger é uma ferramenta de linha de comando utilizada em sistemas operativos Linux e Unix para adicionar logs ao/var/log/syslog
ficheiro ou servidor remoto Syslog. logger fornece diferentes opções para adicionar logs como definir a prioridade, especificar um sistema remoto ou definir explicitamente a porta Syslog.
comando Syslogger é instalado por defeito na maioria das distribuições Linux. Portanto, não há necessidade de o instalar explicitamente. Podemos imprimir a ajuda e informação de utilização com a opção -h
como abaixo. As opções mais utilizadas do comando logger serão listadas com alguma descrição.
$ logger -h
Alternativamente para ajuda mais detalhada e informação de utilização podemos olhar e usar a página de homem do comando logger como abaixo.
$ man logger
logger Comando Syntax
logger comando tem uma sintaxe simples onde primeiro são fornecidas as opções e depois o log ou mensagem que queremos enviar ao Syslog.
logger OPTIONS LOG
- `OPTIONS` são opções únicas ou mais para definir alguns atributos como servidor remoto, porta, facilidade de log, etc.
- `LOG` é a mensagem de log que queremos adicionar ou enviar. O circundamento com aspas duplas será mais fiável.
Linux Syslog
Syslog é uma parte importante do log do Linux. A maioria das distribuições Linux como Ubuntu, Debian, CentOS, Mint, RedHat, Suse armazena os ficheiros de registo sob o directório /var/log
. Existem diferentes tipos de registos sob este directório como auth, MySQL, apache, etc. Syslog é um ficheiro de registo genérico e o sistema utilizado para armazenar os registos relacionados com o sistema, serviços, etc. O ficheiro syslog
pode ser visualizado com o comando tail como abaixo.
$ tail /var/log/syslog
Print Logs From Syslog
Before beginning to add a log to the syslog file printing the current syslog file will be very beneficial. Podemos utilizar diferentes comandos para imprimir o ficheiro syslog. tail
é um comando utilizado para imprimir as últimas 10 linhas do ficheiro dado. Em alternativa, podemos fornecer a contagem de linhas que queremos imprimir explicitamente. No exemplo seguinte, iremos imprimir 30 linhas do /var/log/syslog
. Utilizaremos a opção -n
para especificar a contagem de linhas.
$ tail -n 30 /var/log/syslog
Adicionar Registo ao Ficheiro Syslog
Damos início com um exemplo simples do comando logger. Vamos apenas adicionar uma única linha ao ficheiro syslog sem fornecer qualquer opção ao comando logger. No exemplo seguinte, adicionaremos a linha “Esta é apenas uma simples linha de log” ao ficheiro syslog. Depois listaremos utilizando o comando de cauda.
$ logger "This is just a simple log line"
p>Vemos que o log é adicionado ao fim do ficheiro que está listado no fundo. Há também alguma informação sobre o log como abaixo.
- ` 26 01:20:47` é a informação de data ou hora do log quando este é adicionado ao ficheiro syslog.
- `poftut-com` é o nome do sistema.
- `ismail` é o nome do utilizador ou logger.
Specify Log Priority or Facility
geralmente, os logs são prioritizados pelos recursos de criação de logs. Isto também se chama uma facilidade utilizada para categorizar os registos. Podemos dar prioridade ou facilidade utilizando a opção -p
ou --priority
de forma longa. Se não fornecermos a prioridade da facilidade, o padrão é user.notice
. No exemplo seguinte, iremos definir a prioridade lof como local3.info
.
$ logger -p "local3.info" "This is just a simple log line"
Specify Remote Syslog Server IP Address
Por defeito, o comando logger irá colocar a dada linha de log no sistema local /var/log/syslog
ficheiro. Mas nem sempre é este o caso. Em ambientes empresariais, os logs devem ser recolhidos e geridos num servidor central de logs. Podemos utilizar o comando logger a fim de enviar o log dado para o servidor remoto fornecendo o endereço IP ou o nome da máquina. Utilizaremos o -n
ou --server
opção para enviar o servidor de registo remoto.
$ logger -n 192.168.1.10 "This is just a simple log line"
Utilizar TCP como Protocolo Syslog
Syslog utiliza o protocolo UDP por defeito. O UDP proporciona uma transmissão mais rápida, com poucos recursos e fácil de ficheiros de registo. Mas o UDP não fornece fiabilidade completa onde entra o TCP. Podemos alterar o protocolo de transmissão padrão UDP para TCP usando a opção -T
ou --tcp
.
$ logger -n 192.168.1.10 -T "This is just a simple log line"
Specify Remote Syslog Server Port Number
Ao enviar um log do sistema local para o sistema remoto, a porta padrão do syslog é 514 para ambos os protocolos UDP e TCP. Podemos alterar o número da porta explicitamente usando a opção -P
ou --port
fornecendo o número da porta.
$ logger -n 192.168.1.10 -P 1514 "This is just a simple log line"
Saída de Comando Redirecto Como Log
Linux fornece muitas ferramentas que registam as suas acções com precisão. Podemos usar o comando logger a fim de enviar estes comandos de saída como um log. e apenas usaremos os bash shell backticks para rodear o comando. Abaixo registaremos o comando who
no syslog.
$ logger `who`
A última linha do syslog fornece a saída do comando who que contém o nome de utilizador, número da consola, e data do utilizador actualmente ligado.
Log Specified File
Podemos colocar o conteúdo dos ficheiros de texto linha a linha no ficheiro syslog. Utilizaremos a opção e forneceremos o ficheiro que queremos registar. Neste exemplo, registaremos o ficheiro chamado hostnames
.
$ logger -f hostnames
Set ou Limit Log Size
Logs são usados para criar informação simples. Assim, quando existem algumas linhas com muitos dados, estas devem ser traduzidas ou estabelecidas limitações. Podemos definir um limite para a contagem de caracteres das linhas de registo usando a opção --size
e a contagem de caracteres que queremos definir. No exemplo seguinte, iremos definir a contagem ou limite como 10.
$ logger --size 10 123456789012345678901234567
Ignorar linhas em branco ou vazias
Linhas em branco ou vazias
Linhas em branco ou vazias, enquanto se lêem linhas de registo de um ficheiro. O registo de linhas em branco ou em branco não é eficiente, pelo que podemos ignorar as linhas em branco ou vazias utilizando a opção -e
como abaixo.
$ logger -e -f hostnames