Saya mencoba menggunakan SLF4J (dengan log4j
ikatan) untuk pertama kalinya.
Saya ingin mengonfigurasi 3 Logger bernama berbeda yang dapat dikembalikan oleh LoggerFactory yang akan mencatat level yang berbeda dan mendorong pesan ke appenders yang berbeda:
- Logger 1 "FileLogger" mencatat DEBUG dan menambahkannya ke
DailyRollingFileAppender
- Logger 2 "TracingLogger" mencatat TRACE + dan menambahkan ke a
JmsAppender
- Logger 3 "ErrorLogger" mencatat ERROR + dan menambahkan ke yang berbeda
JmsAppender
Selanjutnya saya ingin mereka dikonfigurasi secara pemrograman (di Jawa, sebagai lawan dari XML atau log4j.properties
file).
Saya membayangkan bahwa, biasanya, saya akan mendefinisikan ini Logger
di suatu tempat dalam beberapa kode bootstrap, seperti init()
metode. Namun, karena saya ingin menggunakan slf4j-log4j
, saya bingung tentang di mana saya bisa mendefinisikan logger dan membuatnya tersedia untuk classpath.
Saya tidak percaya ini merupakan pelanggaran tujuan SLF4J yang mendasari (sebagai fasad), karena kode saya menggunakan SLF4J API tidak akan pernah tahu bahwa ada penebang ini. Kode saya hanya membuat panggilan normal ke API SLF4J, yang kemudian meneruskannya ke log4j Loggers yang ditemukannya di classpath.
Tapi bagaimana cara mengkonfigurasi Log4j Loggers itu di classpath ... di Java ?!