[Questo è stato scritto alcuni anni prima dell'adozione diffusa di journald su sistemi systemd e non ci tocca. Attualmente (fine 2018) sia journald che (r) syslog, descritti di seguito, sono utilizzati su distro come Debian. Su altri, potrebbe essere necessario installare rsyslog se si desidera utilizzarlo insieme, ma l'integrazione con journald è semplice.]
Non discuterò del logging per quanto riguarda Ubuntu in particolare, dal momento che l'argomento è standardizzato per Linux in generale (e credo che la maggior parte o tutto ciò che ho da dire sia vero anche in generale per qualsiasi sapore * nix, ma non prendi la mia parola per quello). Inoltre non dirò molto su "come leggere i registri" oltre a rispondere a questa domanda:
È forse corretto supporre che siano scritti per la leggibilità umana o che siano generalmente valutati e utilizzati da altri strumenti?
Immagino che dipenda dall'applicazione, ma in generale, almeno per quanto riguarda ciò che va nel syslog (vedi sotto), dovrebbero essere leggibili dall'uomo. "Significativo per me" è un altro problema, lol. Tuttavia, possono anche essere strutturati in modo da semplificarne l'analisi con strumenti standard (grep, awk, ecc.) Per scopi specifici.
Tuttavia, in primo luogo, esiste una distinzione tra applicazioni che eseguono la propria registrazione e applicazioni che utilizzano il registratore di sistema. Apache per impostazione predefinita è il primo, anche se può essere configurato per fare il successivo (che penso che la maggior parte delle persone considererebbe indesiderabile). Le applicazioni che eseguono la propria registrazione potrebbero farlo in qualsiasi modo utilizzando qualsiasi posizione per i file, quindi non c'è molto da dire al riguardo. Il logger di sistema è generalmente indicato come syslog
.
syslog
"Syslog" è in realtà uno standard implementato con un processo daemon genericamente chiamato syslogd (d è per demone!). Il demone syslog predominante attualmente in uso su Linux, incluso Ubuntu, è rsyslogd
. Rsyslogd può fare molto, ma come configurato immediatamente sulla maggior parte delle distro emula un syslog tradizionale, che ordina le cose in semplici file di testo /var/log
. È possibile trovare la documentazione per esso in /usr/share/doc/rsyslog-doc-[version]
(attenzione, c'è anche un /usr/share/doc/rsyslog-[version]
, ma questo è solo avvisi dal pacchetto sorgente come NEWS
e ChangeLog
). Se è lì, è html, ma Stack Exchange non consente l'incorporamento di collegamenti di file locali:
file://usr/share/doc/rsyslog-doc/index.html
Quindi potresti provare a copiarlo. Se non è presente, potrebbe far parte di un pacchetto separato che non è installato. Interroga il tuo sistema di imballaggio (ad es apt-cache search rsyslog | grep doc
.).
La configurazione è in /etc/rsyslog.conf
, che ha una pagina di manuale man rsyslog.conf
, anche se mentre la pagina di manuale fa un riferimento preciso, potrebbe essere meno penetrabile come introduzione. Fortunatamente, i fondamenti dello stock rsyslog.conf sono conformi a quelli del tradizionale syslog.conf, per i quali ci sono molte introduzioni e tutorial in giro. Questo , per esempio; quello che vuoi togliere da questo, mentre scruti sul tuo rsyslog.conf locale, è una comprensione delle strutture e delle priorità (la "priorità" viene talvolta definita come loglevel), poiché fanno parte del suddetto standard syslog. Il motivo per cui questo standard è importante è perché rsyslog ottiene effettivamente i suoi contenuti tramite il kernel e ciò che il kernel implementa è lo standard.
Per quanto riguarda le $
direttive in rsyslog.conf, queste sono specifiche di rsyslog e se installi quel pacchetto di documenti opzionale troverai una guida in esse rsyslog_conf_global.html
.
Divertiti ... se sei curioso di sapere come le applicazioni usano il logger di sistema, guarda man logger
e man 3 syslog
.
Rotazione del registro
Il mezzo normativo per ruotare i tronchi è tramite uno strumento chiamato logrotate
(e c'è un man logrotate
). Il metodo normativo di utilizzo di logrotate è tramite il demone cron , anche se non deve essere fatto in questo modo (ad esempio, se si tende a spegnere il desktop ogni giorno, è possibile farlo anche una volta all'avvio prima dell'inizio di syslog , ma ovviamente, dopo che il filesystem è montato rw).
C'è una buona introduzione a logrotate qui . Nota che logrotate non è solo per roba di syslog , può essere usato con qualsiasi file. Il file di configurazione di base è /etc/logrotate.conf
, ma poiché la configurazione ha una direttiva "include", generalmente la maggior parte delle cose va nei singoli file nella /etc/logrotate.d
directory (qui d sta per directory, non daemon; logrotate non è un demone).
Una cosa importante da considerare quando si utilizza logrotate è come un'applicazione reagirà quando il suo file di registro viene "ruotato" - in altre parole, spostato - mentre l'applicazione è in esecuzione. WRT (r) syslogd, smetterà di scrivere su quel registro (penso che ci sia una giustificazione della sicurezza per questo). Il solito modo di gestirlo è dire a syslog di riavviarsi (e riaprire tutti i suoi file), motivo per cui vedrai una postrotate
direttiva nei file conf logrotate che inviano SIGHUP al demone syslog.