Di mana `logger` mencatat pesannya di Arch Linux?

18

The loggerperintah log entri melalui syslog, yang biasanya menempatkan baris yang beberapa file seperti /var/log/messages.

Jika saya memahami dokumentasi dengan benar di Arch Linux, semua logging dilakukan melalui systemd, tetapi saya tidak dapat menemukan loggerentri yang digunakan journalctl.

  • Apa sebenarnya yang terjadi dengan pesan yang diberikan loggerdi Arch Linux?
  • Di mana entri log disimpan? (Grep cepat menyarankan /var/log/journal/*/system.journal.)
  • Bagaimana saya bisa mengakses log ini? (Apakah saya memerlukan opsi khusus journalctl?)
michas
sumber

Jawaban:

15

Karena pesan log tidak muncul di jurnal di mana pun , saya curiga Anda tidak memiliki pengaturan syslog ke journald yang diatur dengan benar, dan pesan-pesan itu semakin hilang. Karena Anda berada di Arch, ini mudah diperbaiki. Pastikan bahwa syslog-ngpaket diinstal:

pacman -S syslog-ng

Kemudian pastikan itu diaktifkan saat boot:

systemctl enable syslog-ng

Akhirnya, karena mengaktifkan layanan tidak secara otomatis memulainya, mulai layanan:

systemctl start syslog-ng

Lihat halaman Arch Wiki ini untuk detailnya.

Inilah beberapa latar belakang mengapa masalah ini terjadi:

Ada cara tertentu untuk masuk ke syslog klasik, dan ada cara tertentu untuk masuk ke jurnal systemd baru. Ini tidak kompatibel; aplikasi yang mendukung syslog tidak dapat secara ajaib dibuat untuk mendukung jurnal - penulis harus secara eksplisit mengimplementasikan fitur ini. Aplikasi yang mendukung jurnal systemd umumnya disebut sebagai mendukung "API asli" ketika berjalan pada sistem systemd.

Karena syslog API dan journald API berbeda, aplikasi yang tidak mendukung API journald hanya akan dihapus pesan lognya. Inilah yang terjadi dalam kasus Anda.

Tugas syslog-ngpaket adalah menerjemahkan panggilan API syslog menjadi panggilan API journald. Dengan cara ini, pesan syslog akhirnya membuatnya menjadi jurnal.

strugee
sumber
syslog-ngdiinstal tetapi tidak diaktifkan, saya berasumsi journald telah menggantinya sepenuhnya. Apakah loggerhanya dapat berbicara dengan syslog? Apa cara yang benar untuk masuk ke journald?
michas
@ Michael Saya telah menambahkan bagian yang mudah-mudahan akan mengklarifikasi itu
strugee
"[..] untuk menerjemahkan panggilan syslog API menjadi panggilan API journald" - Sejauh yang saya lihat, terjemahan hanya bekerja sebaliknya: Saya menemukan semua pesan di / var / log / tetapi hanya yang journald di journalctl.
michas
@michas itu mungkin sesuatu yang journald tidak, saya tidak yakin. syslog-ngmeneruskan pesan yang ditujukan ke syslog ke journald.
strugee
1
Apakah logger foobar;journalctl|grep foobarpada sistem Anda mencantumkan entri?
michas
0

Beberapa daemon tidak menulis log /var/log/di Arch Linux dan konfigurasinya syslog-ngberbeda dari jawaban lain yang pernah saya lihat.

Layanan normal syslog-ng.servicetidak ada, itu sebenarnya dinamai [email protected]sebaliknya.

Ini tidak akan berfungsi:

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

Saya harus melakukannya sedikit berbeda per Arch Wiki :

# systemctl start [email protected]
# systemctl enable [email protected]
Created symlink /etc/systemd/system/multi-user.target.wants/[email protected] → /usr/lib/systemd/system/[email protected].
#
Lloyd Rochester
sumber