Saya telah memasukkan log4j ke buildpath saya, tetapi saya mendapatkan pesan berikut ketika saya menjalankan aplikasi saya:
log4j:WARN No appenders could be found for logger (dao.hsqlmanager).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Apa arti peringatan ini? Apa appender di sini?
Jawaban:
Ini pengenalan singkat ke log4j panduan sedikit tua tapi masih berlaku.
Panduan itu akan memberi Anda beberapa informasi tentang cara menggunakan penebang dan appender.
Hanya untuk membuat Anda pergi, Anda memiliki dua pendekatan sederhana yang dapat Anda ambil.
Yang pertama adalah menambahkan baris ini ke metode utama Anda:
Pendekatan kedua adalah menambahkan
log4j.properties
file standar ini (diambil dari panduan yang disebutkan di atas) ke classpath Anda:sumber
log4j.rootLogger=DEBUG, A1
adalah garis yang saya lewatkan sepanjang waktu.Sepertinya Anda perlu menambahkan lokasi
log4j.properties
file Anda ke Classpath di Eclipse.Pastikan proyek Anda terbuka di Eclipse, lalu klik menu "Run" di bagian atas Eclipse dan klik yang berikut ini:
Pesan kesalahan seharusnya tidak lagi muncul.
sumber
Solusi cepat:
tambahkan kode ke fungsi utama :
buat file bernama log4j.properties di / path / to
sumber
Ini hanya peringatan.
Pemasangan
Ini terjadi ketika file konfigurasi default
log4j.properties
danlog4j.xml
tidak dapat ditemukan dan aplikasi tidak melakukan konfigurasi eksplisit.Untuk memperbaikinya, cukup buat / salin
log4j.properties
ataulog4j.xml
ke lokasi Anda di classpath (biasanya sama dengan file jar).Opsional menetapkan pilihan java:
-Dlog4j.configuration=file:///path/to/log4j.properties
.Debugging
Untuk debugging, Anda dapat mencoba menggunakan
-Dlog4j.debug=true
parameter.Konfigurasi
log4j.properties
Konfigurasi sampel dari
log4j.properties
:Berikut ini adalah file konfigurasi lain yang menggunakan beberapa appenders:
Apache Solr
Jika menggunakan Solr , salin
<solr>/example/resources/log4j.properties
ke lokasi di classpath .Konfigurasi sampel
log4j.properties
dari Solr seperti:Lihat juga:
sumber
Sebagian besar jawaban di sini menyarankan bahwa
log4j.properties
file ditempatkan di lokasi yang tepat (untuk proyek pakar, itu harus berada disrc/main/resources
)Tetapi bagi saya, masalahnya adalah bahwa saya
log4j.properties
tidak dikonfigurasi dengan benar. Ini contoh yang cocok untuk saya, Anda bisa mencobanya dulu.sumber
Seperti yang dijelaskan sebelumnya ada 2 pendekatan
Yang pertama adalah menambahkan baris ini ke metode utama Anda:
Pendekatan kedua adalah menambahkan file log4j.properties standar ini ke classpath Anda:
Saat mengambil pendekatan kedua Anda perlu memastikan Anda menginisialisasi file dengan benar, misalnya.
Pastikan Anda membuat folder yang diperlukan untuk menyimpan file log.
sumber
Anda menggunakan
Logger
dalam kode Anda untuk mencatat pesan. IniAppender
adalah Obyek yang ditambahkan keLogger
untuk menulis pesan ke target tertentu. AdaFileAppender
untuk menulis ke file teks atauConsoleAppender
menulis ke Konsol. Anda perlu menunjukkan kode Anda tentang pengaturan Logger dan Appender untuk bantuan lebih lanjut.silakan baca tutorial untuk pemahaman yang lebih baik tentang interaksi Logger dan Appender.
sumber
Pastikan file properti telah diatur dengan benar. Dan lagi, sepertinya kompiler tidak dapat menemukan file properti, Anda dapat mengaturnya sebagai berikut di pom (hanya ketika Anda menggunakan proyek pakar).
sumber
Saya mendapatkan kesalahan yang sama. Di sini masalah yang mengarah ke pesan kesalahan ini:
Saya membuat beberapa objek yang menggunakan Logger sebelum saya mengkonfigurasi log4j:
Solusi: Konfigurasikan log4j di awal dalam metode utama:
sumber
Saya pikir Anda harus memahami di mana file jar log4j atau kode Java mencari file konfigurasi log4j.
src/main/resources/log4j.properties
adalah jalur Eclipse. Tempatkan mereka di lokasi yang tepat sehingga Anda tidak perlu membuat hard code jalur absolut dalam kode.Baca artikel saya dan contoh solusi untuk itu http://askyourquestions.info/2016/03/27/how-to-see-where-the-log-is-logger-in-slf4j/
sumber
Alasan lain ini mungkin terjadi (dalam RCP4) adalah bahwa Anda menggunakan beberapa kerangka kerja logging di file target Anda. Sebagai contoh, ini akan terjadi jika Anda menggunakan kombinasi slf4j, log4j dan ch.qos.logback.slf4j di tab konten file target Anda.
sumber
Tambahkan yang berikut ini sebagai kode pertama:
sumber
Dalam kasus saya, kesalahannya adalah bendera " aditivitas ". Jika "salah" untuk Anda me-root paket proyek, maka paket anak tidak akan memiliki append dan Anda akan melihat kesalahan " appender not found ".
sumber
Saya menghadapi masalah yang sama ketika saya mencoba menjalankan kelas tes JUnit.
Masalah ini teratasi setelah saya secara manual menambahkan file log4j.properties di folder src / test / resources.
Menambahkan kode di bawah ini ke file log4j.properties memecahkan masalah:
sumber
Saya mengalami masalah ini ketika mencoba membangun jar yang dapat dieksekusi dengan maven di intellij 12. Ternyata karena file java manifest tidak menyertakan jalur kelas, file properti log4j tidak dapat ditemukan di tingkat root (di mana file jar dijalankan dari.)
FYI saya mendapatkan logger seperti ini:
Dan saya bisa membuatnya berfungsi dengan file pom yang termasuk ini:
sumber
Pastikan proyek Anda terbuka di Eclipse, lalu klik menu "Run" di bagian atas Eclipse dan klik yang berikut ini:
Lari
Jalankan Konfigurasi
Classpath (tab)
Entri Pengguna
tambahkan toples di sebelah kanan
tambahkan file jar log4j
Menerapkan
Lari
Pesan kesalahan seharusnya tidak lagi muncul.
sumber
Alasannya mungkin karena kurangnya kata
static
dalam beberapa:Jika saya membuat logger bidang instance, saya mendapatkan peringatan yang persis seperti ini:
Yang lebih buruk, peringatan itu tidak menunjukkan
ProcessorTest
, di mana kesalahan itu terjadi, tetapi ke kelas yang sama sekali berbeda (Pengirim) sebagai sumber masalah. Yang kelas memiliki set logger yang benar dan kebutuhan tidak ada perubahan! Kita bisa mencari masalah untuk waktu yang lama!sumber
Saya menghadapi masalah yang sama ketika saya menggunakan log4j2. Masalah saya disebabkan oleh penggunaan pustaka dependen yang salah:
Sebagai gantinya, saya harus menggunakan:
Dalam kasus saya, saya memiliki log4j2.xml didefinisikan dalam direktori "sumber daya" saya, dan ditentukan untuk menggunakannya dengan:
sumber
Log4J menampilkan pesan peringatan ini ketika kode Java Log4j sedang mencari untuk membuat baris log pertama di program Anda.
Saat ini, Log4j membuat 2 hal
log4j.properties
filelog4j.properties
Jika
log4J
tidak menemukanlog4j.properties
file atau jika append yang dideklarasikanlog4j.rootlogger
tidak didefinisikan di tempat lain dalamlog4j.properties
file pesan peringatan ditampilkan.PERHATIAN: konten file Properties harus benar.
Konten berikut ini TIDAK benar
karena
file
appender dinyatakan dalam RENDAH-KASUS dalamlog4j.rootlogger
pernyataan dan didefinisikan dalam pernyataan log4j.appender menggunakan UPPER-CASE!File yang benar adalah
Jika MAVEN digunakan, Anda harus meletakkan file log4j.properties di
src/main/resources
DAN mulai membangun MAVEN.File properti Log4j.prop kemudian disalin dalam
target/classes
folder.Log4J menggunakan
log4j.properties
file yang ditemukan di dalamnyatarget/classes
!sumber
Saya punya masalah ini juga. Saya hanya lupa menandai direktori sumber daya di IntelliJ IDEA
sumber
Jika Anda menggunakan Eclipse dan masalah ini muncul entah dari mana setelah semuanya bekerja dengan baik sebelumnya, coba buka
Project - Clean - Clean
.sumber
Instalasi Eclipse saya tidak dapat menemukan
log4j.properties
ketika menjalankan tes JUnit dari Eclipse, meskipun file tersebut berada disrc/test/resources
.Alasannya adalah bahwa Eclipse (atau konektor m2e ) tidak menyalin konten dari
src/test/resources
ke folder output yang diharapkantarget/test-classes
- akar penyebabnya adalah bahwa dalam properti proyek di bawah Java Build Path -> Source tab -> Folder sumber pada build path -> src / tes / sumber daya , entah bagaimana adaExcluded: **
entri. Saya menghapus entri yang dikecualikan .Atau, saya bisa menyalin secara manual
src/test/resources/log4j.properties
ketarget/test-classes/log4j.properties
.sumber
Jika
log4j.properties
memang ada di classpath, Anda menggunakan Spring Boot untuk membuat file WAR untuk ditempatkan ke server aplikasi, Anda menghilangkanweb.xml
file yang mendukung autoconfigure Spring Boot, dan Anda tidak mendapatkan pesan log apa pun, Anda perlu secara eksplisit konfigurasikan Log4j. Dengan asumsi Anda menggunakan Log4j 1.2.x:sumber
Mungkin menambahkan proyek relevent berisi log4j di java build path, saya menambahkan mahout_h2o ke dalamnya ketika saya menemukan masalah ini dalam proyek mahout menggunakan eclipse, itu berhasil!
sumber
jika Anda bekerja sama dengan banyak proyek, Anda mungkin menghadapi masalah gaya.
* Anda harus memiliki satu file lof4j.properties dan file ini termasuk properti log dari proyek lain.
* Di samping Anda dapat mencoba untuk menempatkan file properti log4j ke jalur src ketika proyek ini bekerja Linux OS, libs proyek lain dan file log4.properties dapat di bawah satu folder ke lokasi di classpath.
sumber
Impor pertama:
Kemudian tambahkan kode di bawah ini ke metode utama:
Buat file di jalur ke dan tambahkan kode di bawah ini ke file itu.
sumber
Solusi di situs ini berfungsi untuk saya https://crunchify.com/java-how-to-configure-log4j-logger-property-correctly/ . Saya sekarang tidak melihat peringatan sama sekali dari log4j
Saya memasukkan ini ke file log4j.properties yang saya masukkan ke src / main / resources
sumber
Pertama-tama: Buat file log4j.properties
Tempatkan di src / main / resources /
Setelah itu, gunakan 2 dependensi ini:
Perlu menambahkan ketergantungan akhir ini ke file POM:
sumber
Pertimbangkan argumen JVM log4j Dlog4j.configuration
Secara umum:
Tambahkan argumen JVM yang menunjukkan file konfigurasi log4j. Sintaksnya seperti berikut:
Contoh dari baris perintah nyata adalah seperti berikut:
Untuk pengguna IntelliJ IDE:
Kiat:
1.Eclipse IDE pengguna akan menemukan pendekatan yang setara
2.Untuk editor konfigurasi run / debug, sangat mungkin bahwa, pada awal kali, file yang dapat dieksekusi khusus Anda tidak ada. Bergantung pada ukuran proyek yang sedang Anda kerjakan, mungkin tidak menyenangkan untuk menavigasi direktori untuk menemukannya. Ini tidak terlalu merepotkan jika Anda hanya menjalankan / mengeksekusi file (klik putar) satu kali sebelum melanjutkan untuk menjalankan / men-debug konfigurasi tidak peduli apa hasil eksekusi.
3. Perhatikan direktori kerja Anda, jalur relatif, dan classpath.
sumber
Dalam java eclipse salin conf_ref Anda ke folder conf.
sumber