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?)
michas
fonte

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.

strugee
fonte
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 [email protected].

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 [email protected]
# systemctl enable [email protected]
Created symlink /etc/systemd/system/multi-user.target.wants/[email protected] → /usr/lib/systemd/system/[email protected].
#
Lloyd Rochester
fonte