Saat melakukan troubleshooting kegagalan pengiriman pesan atau keterlambatan konsumen di ApsaraMQ for RocketMQ, log client merupakan alat diagnostik utama Anda. SDK Java secara otomatis menghasilkan file log yang mencatat exception waktu proses, event koneksi, dan detail siklus hidup pesan.
Kami menyarankan Anda menggunakan SDK RocketMQ 5.x terbaru. SDK ini sepenuhnya kompatibel dengan broker ApsaraMQ for RocketMQ 5.x serta menyediakan lebih banyak fungsi dan fitur yang ditingkatkan. Untuk informasi selengkapnya, lihat Panduan versi Java SDK.
Alibaba Cloud hanya memelihara SDK client TCP serta SDK RocketMQ 3.x dan 4.x. Kami menyarankan Anda hanya menggunakannya untuk bisnis yang sudah ada.
Pengaturan log default
Client menghasilkan file log secara otomatis dengan pengaturan default berikut:
| Setting | Nilai default | Dapat dikustomisasi | Properti sistem |
|---|---|---|---|
| Path penyimpanan log | /{user.home}/logs/ons.log | Ya | ons.client.logRoot |
| Tingkat log | INFO | Ya | ons.client.logLevel |
| Jumlah maksimum file log yang disimpan | 10 | Ya | ons.client.logFileMaxIndex |
| Ukuran file log | 64 MB | Tidak | N/A |
Pada path default tersebut, {user.home} adalah direktori home dari akun yang menjalankan proses Java.
Tingkat log
Tingkat log yang valid adalah:
| Tingkat |
|---|
ERROR |
WARN |
INFO |
DEBUG |
Aktifkan pencetakan log
SDK Java menggunakan API SLF4J untuk logging. Konfigurasi tergantung pada versi SDK Anda.
SDK untuk Java 1.7.8.Final atau lebih baru
Tidak diperlukan konfigurasi tambahan. Versi ini mencakup framework logging bawaan yang menangani output log secara otomatis.
Versi SDK untuk Java sebelum 1.7.8.Final
Tambahkan dependensi framework logging yang didukung (Log4j atau Logback) ke file pom.xml atau .lib Anda.
SDK Java 1.7.8.Final dan versi sebelumnya hanya mendukung Log4j dan Logback. Log4j2 tidak didukung.
Jika aplikasi Anda menyertakan Log4j dan Logback secara bersamaan, konflik logging akan mencegah pencetakan log client secara benar. Gunakan hanya satu framework logging. Untuk mengidentifikasi konflik, jalankan:
mvn clean dependency:tree | grep logUntuk menghindari keterbatasan ini, lakukan upgrade ke versi terbaru SDK Java.
Kustomisasi log client
Konfigurasi log kustom memerlukan SDK Java 1.2.5 atau lebih baru.
Teruskan properti sistem Java melalui flag -D dalam skrip startup atau opsi mesin virtual (VM) di lingkungan pengembangan terintegrasi (IDE) Anda.
Properti yang tersedia
| Properti | Deskripsi | Nilai yang valid |
|---|---|---|
ons.client.logRoot | Direktori file log | Path apa pun yang dapat ditulis di sistem Anda |
ons.client.logLevel | Tingkat log minimum | ERROR, WARN, INFO, DEBUG |
ons.client.logFileMaxIndex | Jumlah maksimum file log yang disimpan | 1 hingga 100 (default ke 10 jika nilai berada di luar rentang atau tidak valid) |
Contoh
Linux atau macOS:
-Dons.client.logRoot=/home/admin/logs -Dons.client.logLevel=WARN -Dons.client.logFileMaxIndex=20Windows:
-Dons.client.logRoot=D:\logs -Dons.client.logLevel=WARN -Dons.client.logFileMaxIndex=20Ganti /home/admin/logs dan D:\logs dengan direktori aktual di sistem Anda. Proses aplikasi harus memiliki izin menulis pada path yang ditentukan; jika tidak, log tidak dapat dicetak.
Penyelesaian masalah logging
| Gejala | Penyebab | Solusi |
|---|---|---|
| Tidak ada file log yang dihasilkan | Dependensi framework logging tidak tersedia (SDK sebelum 1.7.8.Final) | Tambahkan dependensi Log4j atau Logback ke pom.xml |
| Output log kosong atau tidak muncul | Log4j dan Logback keduanya ada di classpath | Hapus salah satu framework. Jalankan mvn clean dependency:tree dan cari log pada output untuk mengidentifikasi konflik |
| Log ditulis ke direktori yang tidak diharapkan | Default {user.home} diselesaikan berbeda saat runtime | Atur ons.client.logRoot secara eksplisit ke path yang diketahui |
| File log terus membesar tanpa batas | Retensi default menyimpan 10 file dengan ukuran masing-masing 64 MB (total 640 MB) | Turunkan nilai ons.client.logFileMaxIndex atau atur rotasi log eksternal |