Saya sedang membangun aplikasi Java kecil dan berharap menggunakan logback untuk logging.
Aplikasi saya memiliki ketergantungan pada proyek lama yang melakukan pencatatan melalui
org.apache.commons | com.springsource.org.apache.commons.logging | 1.1.1
... jadi rencanaku adalah menggunakan
org.slf4j | jcl-over-slf4j | 1.5.6
... untuk mengalihkan logging JCL ke
org.slf4j | slf4j-api | 1.6.0
... dan akhirnya
ch.qos.logback | logback-classic | 0.9.22
ch.qos.logback | logback-core | 0.9.22
sehingga aplikasi saya dapat masuk melalui logback melalui API slf4j sementara kode perpustakaan lama dapat masuk ke lokasi yang sama melalui pengalihan.
Sayangnya, ini menghasilkan
java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;Ljava/lang/Throwable;)V
at org.apache.commons.logging.impl.SLF4JLocationAwareLog.info(SLF4JLocationAwareLog.java:141)
Saya telah mencoba nomor verifikasi yang lebih tinggi dan lebih rendah pada beberapa toples ini dan juga menggali dokumentasi API dan semacamnya ... tetapi saya tidak dapat menemukan dan menyelesaikan masalah.
Tolonglah?
Meskipun logback dianggap sebagai kerangka logging "strategis", saya memiliki beberapa kelonggaran di mana mekanisme logging akhirnya saya gunakan. Saya berharap bisa menggunakan logback atau log4j, dan saya pasti ingin menggabungkan proses masuk proyek lama ke dalam kerangka kerja logging "baru" apa pun yang akhirnya, melalui konfigurasi umum.
sumber
Versi SLF4J 1.5.11 dan 1.6.0 tidak kompatibel (lihat laporan kompatibilitas ) karena daftar argumen
org.slf4j.spi.LocationAwareLogger.log
metode telah diubah (menambahkan Object [] p5):SLF4J 1.5.11:
SLF4J 1.6.0:
Lihat laporan kompatibilitas untuk versi SLF4J lainnya di halaman ini .
Anda dapat membuat laporan seperti itu dengan alat pemeriksa kepatuhan-japi .
sumber
Hanya untuk membantu mereka yang berada dalam situasi yang mirip dengan saya ...
Hal ini dapat terjadi jika pustaka dependen secara tidak sengaja memaketkan slf4j versi lama. Dalam kasus saya, tika-0.8. Lihat https://issues.apache.org/jira/browse/TIKA-556
Solusinya adalah mengecualikan komponen dan kemudian secara manual bergantung pada versi yang benar atau ditambal.
MISALNYA.
sumber