[Ini ditulis beberapa tahun sebelum adopsi journald pada sistem systemd dan tidak menyinggungnya. Saat ini (akhir 2018) baik journald dan (r) syslog, dijelaskan di bawah, digunakan pada distro seperti Debian. Pada yang lain, Anda mungkin harus menginstal rsyslog jika Anda ingin menggunakannya bersama, tetapi integrasi dengan journald sangat mudah.]
Saya tidak akan membahas penebangan berkaitan dengan ubuntu secara khusus, karena topik tersebut distandarisasi untuk linux secara umum (dan saya percaya sebagian besar atau semua yang saya katakan juga berlaku secara umum untuk setiap rasa * nix, tetapi jangan ambil kata saya untuk itu). Saya juga tidak akan banyak bicara tentang "cara membaca log" selain menjawab pertanyaan ini:
Apakah asumsinya bahkan benar bahwa itu ditulis untuk keterbacaan manusia atau mereka umumnya dievaluasi dan digunakan oleh alat lain?
Saya kira itu tergantung pada aplikasinya, tetapi secara umum, setidaknya sehubungan dengan apa yang masuk ke syslog (lihat di bawah), mereka harus dapat dibaca manusia. "Berarti bagiku" adalah masalah lain, lol. Namun, mereka juga dapat disusun dengan cara yang membuat parsing dengan alat standar (grep, awk, dll) untuk tujuan tertentu lebih mudah.
Siapa pun, pertama, ada perbedaan antara aplikasi yang melakukan logging sendiri dan aplikasi yang menggunakan sistem logger. Apache secara default adalah yang pertama, meskipun dapat dikonfigurasi untuk melakukan yang lebih baru (yang saya pikir kebanyakan orang akan menganggap tidak diinginkan). Aplikasi yang melakukan pencatatan sendiri dapat melakukannya dengan cara apa pun menggunakan lokasi apa pun untuk file, sehingga tidak banyak yang bisa dikatakan tentang itu. Logger sistem umumnya disebut sebagai syslog
.
syslog
"Syslog" adalah standar yang diimplementasikan dengan proses daemon yang secara umum disebut syslogd (d adalah untuk daemon!). Daemon syslog dominan yang saat ini digunakan di linux, termasuk ubuntu, adalah rsyslogd
. Rsyslogd dapat melakukan banyak hal, tetapi karena dikonfigurasikan di luar kotak pada kebanyakan distro, ia mengemulasi syslog tradisional, yang mengurutkan berbagai hal menjadi file teks biasa /var/log
. Anda mungkin menemukan dokumentasi untuk itu di /usr/share/doc/rsyslog-doc-[version]
(hati-hati, ada juga /usr/share/doc/rsyslog-[version]
, tapi itu hanya pemberitahuan dari paket sumber seperti NEWS
dan ChangeLog
). Jika ada, itu html, tetapi Stack Exchange tidak mengizinkan menanamkan tautan file lokal:
file://usr/share/doc/rsyslog-doc/index.html
Jadi Anda bisa mencoba menyalinnya. Jika tidak ada di sana, itu mungkin bagian dari paket terpisah yang tidak diinstal. Permintaan sistem pengemasan Anda (mis., apt-cache search rsyslog | grep doc
).
Konfigurasi berada di /etc/rsyslog.conf
, yang memiliki halaman manual man rsyslog.conf
,, meskipun sementara halaman manual membuat referensi yang bagus, itu mungkin kurang dapat ditembus sebagai pengantar. Untungnya, dasar-dasar dari stock rsyslog.conf sesuai dengan yang ada di syslog.conf tradisional, yang ada banyak perkenalan dan tutorial di sekitar. Yang ini , misalnya; apa yang ingin Anda ambil dari itu, sambil mengintip rsyslog.conf lokal Anda, adalah pemahaman tentang fasilitas dan prioritas ("prioritas" kadang-kadang disebut sebagai loglevel), karena ini adalah bagian dari standar syslog tersebut. Alasan standar ini penting adalah karena rsyslog benar-benar mendapatkan barang-barangnya melalui kernel, dan apa yang mengimplementasikan kernel adalah standar.
Sehubungan dengan $
arahan di rsyslog.conf, ini adalah rsyslog khusus dan jika Anda menginstal paket doc opsional Anda akan menemukan panduan untuk mereka di rsyslog_conf_global.html
.
Selamat bersenang-senang ... jika Anda ingin tahu tentang bagaimana aplikasi menggunakan logger sistem, lihat man logger
dan man 3 syslog
.
Rotasi log
Cara normatif untuk memutar log adalah melalui alat yang disebut logrotate
(dan ada a man logrotate
). Metode normatif menggunakan logrotate adalah melalui cron daemon , meskipun tidak harus dilakukan dengan cara itu (misalnya, jika Anda cenderung mematikan desktop Anda setiap hari, Anda mungkin juga cukup melakukannya sekali saat boot sebelum syslog dimulai tetapi, jelas, setelah filesystem di-mount rw).
Ada pengantar yang bagus untuk logrotate di sini . Perhatikan bahwa logrotate bukan hanya untuk hal-hal syslog , tetapi juga dapat digunakan dengan file apa pun. File konfigurasi dasar adalah /etc/logrotate.conf
, tetapi karena konfigurasi memiliki direktif "include", umumnya sebagian besar barang masuk ke file individual dalam /etc/logrotate.d
direktori (di sini adalah untuk direktori, bukan daemon; logrotate bukan daemon).
Suatu hal penting untuk dipertimbangkan ketika menggunakan logrotate adalah bagaimana suatu aplikasi akan bertindak kembali ketika file log-nya "diputar" - dengan kata lain, dipindahkan - saat aplikasi sedang berjalan. WRT (r) syslogd, itu hanya akan berhenti menulis ke log itu (saya pikir ada justifikasi keamanan untuk ini). Cara biasa untuk mengatasinya adalah dengan memberitahu syslog untuk me-restart (dan membuka kembali semua file-nya), itulah sebabnya Anda akan melihat postrotate
arahan dalam file conf logrotate yang mengirimkan SIGHUP ke daemon syslog.