Mengatasi Warning SLF4J Multiple Bindings di Carbonio

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.

Leave a Reply

Your email address will not be published. Required fields are marked *