Obtener registros registrados en un archivo de texto sin formato

Obtener registros registrados en un archivo de texto sin formato

Quiero registrar registros diarios en un archivo para luego poder recuperarlos y enviarlos a Logstash. Pensé en ejecutar syslog-ng y convertirlo en un cliente de journald, para obtener archivos syslog. Estoy usando contenedores Docker en una máquina CoreOS, así que intenté ejecutar syslog-ng como contenedor en el host Docker de CoreOS, creando una unidad systemd que ejecuta el contenedor. Seguíesta página para obtener syslog en systemd, pero si intento hacer que mi contenedor syslog-ng lea directamente desde el socket syslog en el host (montándolo con un volumen acoplable), se queja de "Dirección ya en uso". Así que tengo un registro por diario, un contenedor con syslog-ng ejecutándose, pero no sé cómo obtener registros por diario dentro de syslog-ng.

Mi solución alternativa para obtener registros diarios en un archivo es ejecutar una unidad systemd que ejecute journalctl -f --json | tee -a /var/log/systemd, pero no estoy seguro de la confiabilidad de esta solución. ¿Es esta una solución suficientemente buena?

Respuesta1

Me doy cuenta de que esta pregunta está un poco anticuada, pero es uno de los primeros resultados de búsqueda en Google. Eso y la opción --json no parecen funcionar para mí y no aparecen en las páginas del manual.

Miré la página de manual de journalctl y hay una opción llamada: --no-tail que simplemente enviará la fecha directamente a std, donde se puede canalizar a otra aplicación o archivo.

En mi caso, quería mis registros ssh de hoy, así que ejecuté esto journalctl -u sshd -S today --no-tail > main.log:

Explicación técnica: obtenga todos los registros de hoy que sean de la unidad sshd; Luego >envía esto a un archivo.

En tu caso creo que esto es lo que quieres: journalctl --no-tail > test.log.

Esto fue probado en Arch Linux.

información relacionada