Saat menjalankan layanan Carbonio, terkadang admin menemukan pesan warning di log seperti berikut:
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/zextras/lib/jars/carbonio-message-dispatcher-auth.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/zextras/lib/jars/log4j-slf4j-impl-2.20.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/zextras/mailbox/jars/log4j-slf4j-impl-2.20.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder]
Warning ini sering muncul berulang kali dan membuat log menjadi penuh, meskipun secara fungsi layanan Carbonio tetap berjalan normal.
Apa Arti Warning SLF4J Multiple Bindings?
Baris terpenting dari pesan di atas adalah:
Class path contains multiple SLF4J bindings
Artinya, di dalam classpath Carbonio terdapat lebih dari satu implementasi SLF4J binding (StaticLoggerBinder). SLF4J sendiri hanya mengharapkan satu binding aktif. Jika lebih dari satu ditemukan, SLF4J akan memilih salah satu secara otomatis dan menampilkan warning.
Perlu dicatat, warning ini tidak berbahaya, namun:
- Log menjadi berisik
- Sulit mencari error penting
- Kurang ideal untuk environment produksi
Penyebab Terjadinya Warning
Dalam kasus Carbonio, duplikasi SLF4J binding biasanya disebabkan oleh file JAR yang sama berada di dua lokasi berbeda, yaitu:
/opt/zextras/lib/jars/log4j-slf4j-impl-2.20.0.jar
/opt/zextras/mailbox/jars/log4j-slf4j-impl-2.20.0.jar
Kedua file tersebut sama-sama menyediakan implementasi SLF4J, sehingga memicu warning saat service dijalankan.
Solusi Menghilangkan Warning SLF4J
Untuk mengatasi masalah ini, cukup pastikan hanya satu SLF4J binding yang aktif.
Langkah 1 Identifikasi File Duplikat
Perhatikan path JAR yang disebutkan pada warning log. Biasanya akan langsung terlihat file mana saja yang terduplikasi.
Langkah 2 Rename File JAR (Disarankan)
Alih-alih menghapus file, rename lebih aman agar bisa rollback jika diperlukan.
Contoh:
mv /opt/zextras/lib/jars/log4j-slf4j-impl-2.20.0.jar \
/opt/zextras/lib/jars/log4j-slf4j-impl-2.20.0.jar.disabled
Dengan cara ini, Carbonio tidak lagi memuat file tersebut ke dalam classpath.
Langkah 3 Restart Mailbox Service
Setelah perubahan dilakukan, restart service sesuai dengan OS yang digunakan.
Ubuntu 22.04 / RHEL 8
Jalankan sebagai user zextras:
zmmailboxdctl restart
Ubuntu 24.04 / RHEL 9 (systemd-based)
Jalankan sebagai root:
systemctl restart carbonio-appserver.target
Hasil Setelah Perbaikan
Setelah service di-restart:
- Warning SLF4J tidak muncul lagi
- Log menjadi lebih bersih
- Tidak ada dampak negatif ke fungsi Carbonio
- Logging tetap berjalan normal
Kesimpulan
Warning SLF4J multiple bindings di Carbonio disebabkan oleh duplikasi file JAR logging dalam classpath. Walaupun tidak berdampak langsung ke Carbonio, membersihkan warning ini adalah langkah yang baik untuk menjaga log tetap rapi dan mudah dianalisa.
Solusi terbaik adalah dengan rename salah satu file JAR yang terduplikasi, lalu restart service terkait. Cara ini aman, cepat, dan mudah di-rollback.