Onde o `logger` registra suas mensagens no Arch Linux?


18

O loggercomando registra uma entrada via syslog, que geralmente coloca essa linha em algum arquivo como /var/log/messages.

Se eu entendo a documentação corretamente no Arch Linux, todo o log é feito através do systemd, mas não consigo encontrar as loggerentradas usando journalctl.

  • O que exatamente acontece com uma mensagem dada loggerno Arch Linux?
  • Onde a entrada do log é armazenada? (Um grep rápido sugere /var/log/journal/*/system.journal.)
  • Como posso acessar esse log? (Preciso de alguma opção especial journalctl?)

Respostas:


15

Como as mensagens de log não aparecem no diário em nenhum lugar , suspeito que você não tenha o syslog para o encaminhamento de diário configurado corretamente, e as mensagens estão simplesmente sendo descartadas. Como você está no Arch, isso é fácil de corrigir. Verifique se o syslog-ngpacote está instalado:

pacman -S syslog-ng

Em seguida, verifique se está ativado na inicialização:

systemctl enable syslog-ng

Por fim, como a ativação de serviços não os inicia automaticamente, inicie o serviço:

systemctl start syslog-ng

Veja esta página do Arch Wiki para detalhes.

Aqui estão alguns antecedentes sobre por que esse problema ocorre:

Existe uma certa maneira de efetuar logon no syslog clássico e uma certa maneira de efetuar logon no novo diário systemd. Estes são incompatíveis; aplicativos que suportam syslog não podem ser criados magicamente para dar suporte ao diário - o autor deve implementar explicitamente esse recurso. Os aplicativos que suportam o diário systemd geralmente são chamados de suporte à "API nativa" quando executados em um sistema systemd.

Como a API syslog e a API journald são diferentes, os aplicativos que não suportam a API journald terão suas mensagens de log descartadas. Isto é o que estava acontecendo no seu caso.

O syslog-ngtrabalho do pacote é converter chamadas da API syslog em chamadas da API journald. Dessa forma, as mensagens syslog acabam sendo inseridas no diário.


syslog-ngfoi instalado, mas não ativado, presumi que o journald o substituísse completamente. loggerSó é capaz de falar com o syslog? Qual é a maneira correta de fazer logon no diário?
Michas

@michas Eu adicionei uma seção que esperamos esclarecer que
strugee

"[..] para traduzir as chamadas da API do syslog em chamadas da API do journald" - Até onde eu vejo, a tradução só funciona ao contrário: encontro todas as mensagens em / var / log / mas apenas as mensagens do journald no journalctl.
jan

@michas que podem ser algo que o journald faz, não tenho certeza. syslog-ngencaminha as mensagens endereçadas ao syslog para o journald.
precisa saber é

11
Faz logger foobar;journalctl|grep foobarem sua lista sistema de uma entrada?
michas

0

Alguns daemons não estavam gravando logs /var/log/no Arch Linux e a configuração para syslog-ngé diferente das outras respostas que eu já vi.

O syslog-ng.serviceserviço normal não está lá, na verdade é nomeado syslog-ng@default.service.

Isso não vai funcionar:

# systemctl enable syslog-ng
Failed to enable unit: Unit file syslog-ng.service does not exist.

Eu tenho que fazer um pouco diferente de acordo com o Arch Wiki :

# systemctl start syslog-ng@default.service
# systemctl enable syslog-ng@default.service
Created symlink /etc/systemd/system/multi-user.target.wants/syslog-ng@default.service → /usr/lib/systemd/system/syslog-ng@.service.
#
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.