[Isso foi escrito alguns anos antes da ampla adoção do journald em sistemas systemd e não o tocou. Actualmente (final de 2018) ambos journald e (r) syslog, descritos abaixo, são usados em distribuições como Debian. Em outros, pode ser necessário instalar o rsyslog se você quiser usá-lo ao lado, mas a integração com o journald é direta.]
Não discutirei muito sobre o registro do ubuntu especificamente, já que o tópico é padronizado para linux em geral (e acredito que a maioria ou tudo o que tenho a dizer também é verdade em geral para qualquer sabor * nix, mas não tome minha palavra para isso). Também não falarei muito sobre "como ler logs" além de responder a esta pergunta:
A suposição é mesmo correta de que eles foram escritos para facilitar a leitura humana ou são geralmente avaliados e usados por outras ferramentas?
Eu acho que depende da aplicação, mas em geral, pelo menos no que diz respeito ao syslog (veja abaixo), eles devem ser legíveis por humanos. "Significativo para mim" é outra questão, lol. No entanto, eles também podem ser estruturados de maneira a facilitar a análise com ferramentas padrão (grep, awk, etc.) para fins específicos.
Qualquer um que, em primeiro lugar, exista uma distinção entre aplicativos que fazem seu próprio log e aplicativos que usam o log do sistema. O Apache por padrão é o primeiro, embora possa ser configurado para o posterior (o que eu acho que a maioria das pessoas consideraria indesejável). Os aplicativos que fazem seu próprio log podem fazê-lo de qualquer maneira, usando qualquer local para o (s) arquivo (s), portanto não há muito a dizer sobre isso. O criador de logs do sistema geralmente é chamado de syslog
.
syslog
"Syslog" é realmente um padrão implementado com um processo daemon chamado genericamente syslogd (d é para daemon!). O daemon syslog predominante atualmente em uso no linux, incluindo o ubuntu, é rsyslogd
. O Rsyslogd pode fazer muito, mas, como configurado imediatamente na maioria das distribuições, emula um syslog tradicional, que classifica as coisas em arquivos de texto sem formatação /var/log
. Você pode encontrar documentação para isso em /usr/share/doc/rsyslog-doc-[version]
(cuidado, há também um /usr/share/doc/rsyslog-[version]
, mas isso são apenas avisos do pacote de origem, como NEWS
e ChangeLog
). Se estiver lá, é html, mas o Stack Exchange não permite incorporar links de arquivos locais:
file://usr/share/doc/rsyslog-doc/index.html
Então você pode tentar copiar colando isso. Se não estiver lá, pode fazer parte de um pacote separado que não está instalado. Consulte seu sistema de embalagem (por exemplo, apt-cache search rsyslog | grep doc
).
A configuração está em /etc/rsyslog.conf
, que possui uma página de manual man rsyslog.conf
, embora, enquanto a página de manual faça uma boa referência, ela possa ser menos penetrável como introdução. Felizmente, os fundamentos do estoque rsyslog.conf estão em conformidade com os do syslog.conf tradicional, para os quais existem muitas introduções e tutoriais. Este aqui , por exemplo; o que você deseja tirar disso, enquanto observa o rsyslog.conf local, é um entendimento das instalações e prioridades (a "prioridade" às vezes é chamada de loglevel), uma vez que estes fazem parte do padrão syslog acima mencionado. A razão pela qual esse padrão é importante é porque o rsyslog realmente obtém suas coisas através do kernel, e o que o kernel implementa é o padrão.
Com relação às $
diretivas no rsyslog.conf, elas são específicas do rsyslog e, se você instalar esse pacote opcional de documentos, encontrará um guia para elas rsyslog_conf_global.html
.
Divirta-se ... se você estiver curioso sobre como os aplicativos usam o logger do sistema, veja man logger
e man 3 syslog
.
Rotação de Log
O meio normativo de girar toras é através de uma ferramenta chamada logrotate
(e existe uma man logrotate
). O método normativo de usar o logrotate é por meio do daemon cron , embora não precise ser feito dessa maneira (por exemplo, se você tende a desligar a área de trabalho todos os dias, pode fazê-lo apenas uma vez na inicialização antes do início do syslog , mas, obviamente, depois que o sistema de arquivos for montado rw).
Há uma boa introdução para fazer o logrotate aqui . Observe que logrotate não é apenas para coisas de syslog , pode ser usado com qualquer arquivo. O arquivo de configuração base é /etc/logrotate.conf
, mas como a configuração possui uma diretiva "include", geralmente a maioria das coisas entra em arquivos individuais no /etc/logrotate.d
diretório (aqui d é para diretório, não para daemon; logrotate não é um daemon).
Uma coisa importante a considerar ao usar o logrotate é como um aplicativo reagirá quando seu arquivo de log for "girado" - em outras palavras, movido - enquanto o aplicativo estiver em execução. WRT (r) syslogd, ele irá parar de gravar nesse log (acho que há uma justificativa de segurança para isso). A maneira usual de lidar com isso é dizer ao syslog para reiniciar (e reabrir todos os seus arquivos), e é por isso que você verá uma postrotate
diretiva no logrotate de arquivos conf enviando SIGHUP para o daemon syslog.