¿Dónde registra `logger` sus mensajes en Arch Linux?


18

El loggercomando registra una entrada a través de syslog, que generalmente coloca esa línea en algún archivo como /var/log/messages.

Si entiendo la documentación correctamente en Arch Linux, todo el registro se realiza a través de systemd, pero no puedo encontrar las loggerentradas usando journalctl.

  • ¿Qué sucede exactamente con un mensaje dado loggeren Arch Linux?
  • ¿Dónde se almacena la entrada del registro? (Un grep rápido sugiere /var/log/journal/*/system.journal).
  • ¿Cómo puedo acceder a este registro? (¿Necesito alguna opción especial para journalctl?)

Respuestas:


15

Debido a que los mensajes de registro no aparecen en el diario en ninguna parte , sospecho que no tiene syslog para el reenvío de journald configurado correctamente, y los mensajes simplemente se eliminan. Como estás en Arch, esto es fácil de arreglar. Asegúrese de que el syslog-ngpaquete esté instalado:

pacman -S syslog-ng

Luego, asegúrese de que esté habilitado en el arranque:

systemctl enable syslog-ng

Finalmente, dado que habilitar los servicios no los inicia automáticamente, inicie el servicio:

systemctl start syslog-ng

Vea esta página de Arch Wiki para más detalles.

Aquí hay algunos antecedentes sobre por qué ocurre este problema:

Hay una cierta forma de iniciar sesión en syslog clásico, y hay una cierta forma de iniciar sesión en el nuevo diario systemd. Estos son incompatibles; las aplicaciones que admiten syslog no se pueden hacer mágicamente para admitir la revista; el autor debe implementar explícitamente esta función. Las aplicaciones que admiten el diario systemd generalmente se conocen como compatibles con la "API nativa" cuando se ejecutan en un sistema systemd.

Dado que la API de syslog y la API de journald son diferentes, las aplicaciones que no admiten la API de journald solo recibirán sus mensajes de registro. Esto es lo que estaba sucediendo en su caso.

El syslog-ngtrabajo del paquete es traducir las llamadas API de syslog en llamadas API de journald. De esta manera, los mensajes de syslog eventualmente llegan al diario.


syslog-ngestaba instalado pero no habilitado, supuse que journald lo había reemplazado por completo. ¿ loggerSolo puede hablar con syslog? ¿Cuál es la forma correcta de iniciar sesión en journald entonces?
michas

@michas He agregado una sección que espero aclare eso
strugee

"[..] para traducir las llamadas de API de syslog en llamadas de API de journald" - Por lo que veo, la traducción solo funciona al revés: encuentro todos los mensajes en / var / log / pero solo los de journald en journalctl.
michas

@michas que puede ser algo que hace journald, no estoy seguro. syslog-ngreenvía mensajes dirigidos a syslog a journald.
Strugee

1
¿ logger foobar;journalctl|grep foobarEn su sistema enumera una entrada?
michas

0

Algunos demonios no escribían registros /var/log/en Arch Linux y la configuración para syslog-nges diferente a las otras respuestas que he visto.

El syslog-ng.serviceservicio normal no está allí, en realidad se llama así syslog-ng@default.service.

Esto no funcionará:

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

Tengo que hacerlo un poco diferente según 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.
#
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.