Saya menulis proyek layanan web menggunakan netbeans 6.7.1 dengan glassfish v2.1, menempatkan log4j.properties ke direktori root proyek dan menggunakan:
static Logger logger = Logger.getLogger(MyClass.class);
dalam konstruktor:
PropertyConfigurator.configure("log4j.properties");
dan dalam fungsi:
logger.info("...");
logger.error("...");
// ...
tetapi, ini adalah info kesalahan (sebenarnya, saya telah mencoba memasukkannya ke hampir setiap direktori yang dapat saya sadari):
log4j:ERROR Could not read configuration file [log4j.properties].
java.io.FileNotFoundException: log4j.properties (The system cannot find the file specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)
at java.io.FileInputStream.<init>(FileInputStream.java:66)
at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:297)
at org.apache.log4j.PropertyConfigurator.configure(PropertyConfigurator.java:315)
at com.corp.ors.demo.OrsDemo.main(OrisDemo.java:228)
log4j:ERROR Ignoring configuration file [log4j.properties].
log4j:WARN No appenders could be found for logger (com.corp.ors.demo.OrsDemo).
log4j:WARN Please initialize the log4j system properly.
contoh proyek dapat diperoleh dari http://www.91files.com/?N3F0QGQPWMDGPBRN0QA8
Jawaban:
Saya tahu ini agak terlambat untuk menjawab pertanyaan ini, dan mungkin Anda sudah menemukan solusinya, tetapi saya memposting solusi yang saya temukan (setelah saya banyak melakukan pencarian di Google) sehingga mungkin sedikit membantu:
-Dlog4j.debug
@ the akhir opsi java tomcat AndaSemoga ini bisa membantu.
rgds
sumber
Seperti yang telah dinyatakan, log4j.properties harus berada dalam direktori yang termasuk dalam classpath, saya ingin menambahkan bahwa dalam proyek yang diolah, tempat yang bagus dapat
src/main/resources/log4j.properties
sumber
Anda dapat menentukan lokasi file config dengan argumen VM -Dlog4j.configuration = "file: / C: /workspace3/local/log4j.properties"
sumber
log4j.configurationFile
Anda harus meletakkannya di direktori root, yang sesuai dengan konteks eksekusi Anda.
Contoh:
Jika Anda mulai menjalankan dari proyek yang berbeda, Anda harus memiliki file itu di proyek yang digunakan untuk memulai pelaksanaan. Sebagai contoh, jika proyek yang berbeda memegang beberapa tes JUnit, itu perlu juga memiliki file log4j.properties.
Saya sarankan menggunakan log4j.xml daripada log4j.properties. Anda memiliki lebih banyak opsi, dapatkan bantuan dari IDE Anda dan seterusnya ...
sumber
Untuk Proyek Berbasis Maven, simpan log4j.properties Anda di src / main / resources. Tidak ada yang bisa dilakukan!
sumber
Jika Anda memasukkan log4j.properties di dalam src, Anda tidak perlu menggunakan pernyataan -
Ini akan diambil secara otomatis karena file properti ada di classpath.
sumber
Mencoba:
sumber
File tersebut harus berada di direktori WEB-INF / classes. Struktur direktori ini harus dikemas dalam file perang.
sumber
IDE saya adalah NetBeans. Saya menaruh file log4j.property seperti yang ditunjukkan pada gambar
Akar
Web
WEB-INF
Untuk menggunakan file properti ini, Anda harus menulis kode ini:
Anda dapat menentukan konteks ServletContext statis dari file JSP lain. Contoh:
Sekarang Anda dapat menggunakan file log4j.property di proyek Anda.
sumber
Beberapa jawaban spesifik yang benar secara teknis sudah disediakan, tetapi secara umum, jawaban itu bisa berada di mana saja di kelas runtime, yaitu di mana pun kelas dicari oleh JVM.
Ini bisa berupa direktori / src di Eclipse atau direktori WEB-INF / classes di aplikasi yang Anda gunakan, tetapi sebaiknya perhatikan konsep classpath dan mengapa file tersebut diletakkan di dalamnya, jangan hanya memperlakukan WEB-INF / kelas sebagai direktori "ajaib".
sumber
Saya telah menghabiskan banyak waktu untuk mencari tahu mengapa file log4j.properties tidak terlihat.
Lalu saya perhatikan itu terlihat untuk proyek hanya ketika itu di kedua MyProject / target / kelas / dan MyProject / src / main / sumber daya folder.
Semoga bermanfaat bagi seseorang.
PS: Proyek itu berbasis pakar.
sumber
Saya menemukan bahwa Glassfish secara default melihat [lokasi pemasangan Glassfish] \ glassfish \ domain [domain Anda] \ sebagai direktori kerja default ... Anda dapat menjatuhkan file log4j.properties di lokasi ini dan menginisialisasi dalam kode Anda menggunakan PropertyConfigurator seperti yang telah disebutkan sebelumnya...
sumber
Saya tidak tahu ini cara yang benar. Tapi itu menyelesaikan masalah saya. letakkan file log4j.properties di "folder proyek" / config dan gunakan PropertyConfigurator.configure ("config // log4j.properties");
ini akan bekerja dengan IDE tetapi tidak ketika menjalankan file jar sendiri. Ketika Anda menjalankan file jar sendiri, cukup salin file log4j.properties ke folder tempat file jar berada. Ketika file jar dan properti di direktori yang sama itu berjalan dengan baik.
sumber
Masukkan log4j.properties di classpath. Berikut adalah 2 kasus yang akan membantu Anda mengidentifikasi lokasi yang tepat - 1. Untuk aplikasi web classpath adalah / WEB-INF / kelas.
Untuk menguji dari main / unit test classpath adalah direktori sumber
sumber
Ada banyak cara untuk melakukannya:
Way1: Jika Anda mencoba proyek maven tanpa Menggunakan PropertyConfigurator
Pertama: periksa direktori sumber daya di scr / main
ikuti tangkapan layar:
Way2: Jika Anda mencoba dengan file Properties untuk proyek java / maven Gunakan PropertyConfigurator
Tempatkan file properti di mana saja dalam proyek dan berikan jalur yang benar. katakan: src / javaLog4jProperties / log4j.properties
statis{
}
Way3: Jika Anda mencoba dengan xml pada proyek java / maven Gunakan DOMConfigurator
Tempatkan file properti di mana saja dalam proyek dan berikan jalur yang benar. katakan: src / javaLog4jProperties / log4j.xml
statis{
}
sumber
Setup proyek standar Anda akan memiliki struktur proyek seperti:
Anda menempatkan log4j.properties di dalam folder sumber daya, Anda dapat membuat folder sumber daya jika tidak ada
sumber
Sebenarnya, saya baru saja mengalami masalah ini dalam struktur proyek Java stardard sebagai berikut:
Dalam Eclipse saya perlu menambahkan folder res untuk membangun path, namun, di Intellij, saya perlu menandai folder res sebagai sumber daya seperti yang ditunjukkan oleh screenshot yang ditautkan: klik kanan pada folder res dan tandai sebagai sumber daya .
sumber
Anda tidak perlu menentukan
PropertyConfigurator.configure("log4j.properties");
di kelas Log4J Anda, Jika Anda sudah mendefinisikan properti log4j.prop di struktur proyek Anda.Dalam hal Proyek Dinamis Web: -
Anda perlu menyimpan log4j.properties di WebContent -> WEB-INF -> log4j.properties
Saya harap ini dapat membantu Anda.
sumber