Você pode instalar um daemon syslog, como rsyslog (o padrão nos sistemas derivados da Red Hat). Isso registrará todas as entradas de diário de uma maneira compatível com versões anteriores e, é claro, você poderá especificar um log personalizado para o que desejar.
Se você não precisa de registros exportados em tempo real, você pode usar journalctl --since
como algumas pessoas mencionaram. Você pode executá-lo diariamente à meia-noite com o especificador de tempo yesterday
para obter exatamente 24 horas de registros.
Se você realmente precisa obter logs em intervalos curtos e não quer perder uma única entrada, então você precisa aprender sobre o cursor . Para cada entrada de log, o journalctl fornecerá um cursor que pode ser usado para pular exatamente para essa entrada de log com --cursor
, ou a entrada de log imediatamente seguinte com --after-cursor
. Considere o seguinte exemplo de JSON:
{
"__CURSOR" : "s=6ad7dcf190f3409c8bf8086fec22888c;i=286c44;b=6b134acc25e94d69b4713422b7c773be;m=46f7a97d25;t=55f5e93131a32;x=aecce3d8b96df5dc",
"__REALTIME_TIMESTAMP" : "1512234682620466",
"__MONOTONIC_TIMESTAMP" : "304802790693",
"_BOOT_ID" : "6b134acc25e94d69b4713422b7c773be",
"PRIORITY" : "6",
"_MACHINE_ID" : "770056613d554df2abcb7757ba2e6270",
"_HOSTNAME" : "dalaran.example.us",
"_PID" : "1",
"_UID" : "0",
"_SELINUX_CONTEXT" : "system_u:system_r:init_t:s0",
"_GID" : "0",
"_CAP_EFFECTIVE" : "3fffffffff",
"SYSLOG_FACILITY" : "3",
"SYSLOG_IDENTIFIER" : "systemd",
"_TRANSPORT" : "journal",
"_COMM" : "systemd",
"_EXE" : "/usr/lib/systemd/systemd",
"_CMDLINE" : "/usr/lib/systemd/systemd --switched-root --system --deserialize 25",
"_SYSTEMD_CGROUP" : "/init.scope",
"_SYSTEMD_UNIT" : "init.scope",
"_SYSTEMD_SLICE" : "-.slice",
"CODE_FILE" : "../src/core/unit.c",
"CODE_LINE" : "1505",
"CODE_FUNC" : "unit_status_log_starting_stopping_reloading",
"MESSAGE_ID" : "de5b426a63be47a7b6ac3eaac82e2f6f",
"MESSAGE" : "Stopping OpenSSH server daemon...",
"UNIT" : "sshd.service",
"_SOURCE_REALTIME_TIMESTAMP" : "1512234682615526"
}
Para seus objetivos, o __CURSOR
é um blob opaco. Basta capturar o valor da entrada de log last que você recebe em uma chamada para journalctl
e alimentá-lo para a chamada seguinte :
journalctl --output=json --after-cursor="s=6ad7dcf190f3409c8bf8086fec22888c;i=286c44;b=6b134acc25e94d69b4713422b7c773be;m=46f7a97d25;t=55f5e93131a32;x=aecce3d8b96df5dc" ...