JavaRush /จาวาบล็อก /Random-TH /เราเชื่อมต่อการบันทึกกับโครงการ JavaRush ของเรา (slf4f แล...
Дмитрий Яковенко
ระดับ
Москва

เราเชื่อมต่อการบันทึกกับโครงการ JavaRush ของเรา (slf4f และ log4j)

เผยแพร่ในกลุ่ม
คุณสามารถอ่านวิธีเชื่อมต่อ Maven กับโปรเจ็กต์ JavaRush ของคุณได้ในบทความของฉัน ข้อมูลต่อไปนี้ถือว่าคุณทราบวิธีการทำเช่นนี้ หากเราต้องการใช้ slf4j เราจำเป็นต้องมีการพึ่งพา:
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.30</version>
</dependency>
หลังจากนี้เราทำ:
public static void main(String[] args) throws IOException {
    Logger logger = LoggerFactory.getLogger(Solution.class);
    logger.info("hello world!");
}
และเราได้รับข้อผิดพลาด:
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
ซึ่งโดยทั่วไปแล้วมีเหตุผล slf4j เป็น wrapper แต่เราพันมันไว้รอบ ๆ อะไร? ไม่มีอะไร? เราได้รับข้อผิดพลาด คุณสามารถล้อมรอบหนึ่งในรายการต่อไปนี้: log4j, util.logging, NOP, System.err, JCL, logback รายละเอียดเพิ่มเติมในคำแนะนำเดิม มาดูตัวอย่างของ log4j และ System.err: 1) มาเริ่มกันด้วยสิ่งง่ายๆ ด้วย System.err หากต้องการทำสิ่งนี้ ให้เพิ่มอันนี้ (slf4j-simple) เข้ากับการอ้างอิงก่อนหน้า (slf4j-api)
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.7.30</version>
</dependency>
เราใช้เวอร์ชันเดียวกัน ณ วันที่ 10 พฤษภาคม 2021 คือ 1.7.30 หากคุณใช้การอ้างอิงจากhttps://mvnrepository.com/อย่าลืมลบออก
<scope>test</scope>
มิฉะนั้น บันทึกของคุณจะใช้ได้เฉพาะในการทดสอบเท่านั้น 2) ทีนี้มาลองกำหนดค่า log4jเพื่อสิ่งนี้เราต้องเพิ่มการพึ่งพา 2 รายการ: log4j เองและเลเยอร์ระหว่าง slf4j และ log4j (slf4j-log4j12) ดูเหมือนว่านี้:
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.30</version>
</dependency>
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>
เห็นได้ชัดว่าเราจำเป็นต้องลบ (slf4j-simple) เพื่อที่ slf4j จะได้ไม่สับสนว่าควรทำงานกับคนตัดไม้ตัวไหน และออก (slf4j-api) เนื่องจากนี่คือ slf4j เกี่ยวกับการพึ่งพาที่เพิ่มขึ้น 2 รายการ log4j เรากำลังเพิ่มอันเก่า (ตั้งแต่เดือนพฤษภาคม 2555 ฉันไม่รู้ว่าทำไม คุณสามารถทดลองกับคนอื่นได้) เวอร์ชันของมันคือ 1.2.17 เพื่อให้ slf4j ทำงานได้ คุณต้องมีเลเยอร์ที่เหมาะสม - slf4j-log4j12 โดยที่อักขระสุดท้าย (12) หมายถึงเวอร์ชัน log4j ในกรณีนี้ เวอร์ชันของ slf4j-api และ slf4j-log4j12 ควรเป็น 1.7.30 ซึ่งเป็นเวอร์ชันเสถียรล่าสุดในขณะนี้ หลังจากที่คุณเชื่อมต่อการขึ้นต่อกันและอัปเดตโปรเจ็กต์ Maven แล้ว เพื่อให้ log4j ทำงานได้ คุณต้องมี 2 สิ่งเพิ่มเติม: 1) ตั้งค่าไฟล์การกำหนดค่า เราอ่าน เลือก คัดลอก 2) อ่านการกำหนดค่า log4j ก่อนทำงาน:
PropertyConfigurator.configure("d:\\Java\\JavaRushTasks\\4.JavaCollections\\log4j.properties");
หรือที่คุณมีไฟล์. หากคุณต้องการดูบันทึกทั้งหมด อย่าลืมตั้งค่าระดับการบันทึกเป็น ALL เราเพิ่มในเรซูเม่ - log4j & slf4j คุณเป็นคนสง่างาม! ถ้ามันช่วยได้ - กดไลค์, ติดตาม, กระดิ่ง!)))
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION