คำถามติดแท็ก log4j

log4j is a popular Java-based logging utility. It is a project of the Apache Software Foundation and is licensed under The Apache Software License, Version 2.0

6
Eclipse: การอ้างอิง log4j.dtd ใน log4j.xml
ผมเคยใช้ log4j มากในขณะนี้และผมมักจะใช้นี้ที่ด้านบนของ log4j.xml ที่ (อาจจะเช่นเดียวกับคนอื่น ๆ อีกมากมายและเป็นไปตาม Google นี้เป็นวิธีที่จะทำ): <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> เห็นได้ชัดว่าสิ่งนี้ใช้งานได้อย่างไรก็ตาม Eclipse ไม่ได้ให้ความช่วยเหลือตามบริบทสำหรับการเขียน XML และทั้งหมด นอกจากนี้ยังแสดงคำเตือนเสมอว่าไม่พบไฟล์log4j.dtd . ตอนนี้ฉันอยากรู้วิธีแก้ไข ฉันลองทำสองสามอย่างและได้ผล: <!DOCTYPE log4j:configuration SYSTEM "jar:file:/path/.m2/repository/log4j/log4j/1.2.14/log4j-1.2.14.jar!/org/apache/log4j/xml/log4j.dtd"> <!DOCTYPE log4j:configuration SYSTEM "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd"> ดังที่คุณเห็นจากด้านบนเราใช้ Maven ดังนั้นฉันจึงลองสิ่งนี้ แต่ล้มเหลว: <!DOCTYPE log4j:configuration SYSTEM "jar:file:${M2_REPO}/log4j/log4j/1.2.14/log4j-1.2.14.jar!/org/apache/log4j/xml/log4j.dtd"> โดยปกติ Eclipse จะรู้วิธีจัดการกับตัวแปร classpath แต่เหตุใดจึงไม่ได้ผล ฉันรู้ว่าการอ้างอิงใช้ไม่ได้ในระหว่างรันไทม์ แต่ก็ไม่ง่ายlog4j.dtd(ถ้าฉันไม่ผิด) ก็ไม่น่าจะเป็นปัญหา ใครช่วยให้ความกระจ่างเกี่ยวกับเรื่องนี้ได้ไหม?

1
คุ้มไหมที่จะใช้ slf4j กับ log4j2
ฉันไม่สามารถตัดสินใจได้ว่าจะใช้ slf4j หรือไม่กับ log4j2 จากโพสต์ออนไลน์ดูเหมือนว่ามันจะมีผลงานที่ยอดเยี่ยม แต่จำเป็นจริงๆ จุดเหล่านี้ยังสนับสนุน log4j2: SLF4J บังคับให้แอปพลิเคชันของคุณบันทึกสตริง Log4j 2 API รองรับการบันทึก CharSequence ใด ๆ หากคุณต้องการบันทึกข้อความ แต่ยังสนับสนุนการบันทึก Object ใด ๆ ตามที่เป็นอยู่ Log4j 2 API รองรับการบันทึกอ็อบเจ็กต์ Message, Java 8 lambda expression และการบันทึกแบบไม่ใช้ขยะ (หลีกเลี่ยงการสร้างอาร์เรย์ vararg และหลีกเลี่ยงการสร้าง Strings เมื่อล็อกอ็อบเจ็กต์ CharSequence)
114 java  logging  log4j  slf4j  log4j2 

1
เครื่องหมายใน Java Logging framework คืออะไรและมีเหตุผลอะไรที่ต้องใช้?
ครั้งแรกที่ฉันได้ยินเกี่ยวกับเครื่องหมายเมื่ออ่าน: http://slf4j.org/faq.html ฉันตรวจสอบวิธีการที่ใช้ได้สำหรับวัตถุLogger : http://www.slf4j.org/api/org/slf4j/Logger.html http://logging.apache.org/log4j/2.x/log4j-api/apidocs/org/apache/logging/log4j/Logger.html และพบอินเทอร์เฟซ: http://www.slf4j.org/api/org/slf4j/Marker.html http://logging.apache.org/log4j/2.x/log4j-api/apidocs/org/apache/logging/log4j/Marker.html ข้อมูลเชิงลึกเพิ่มเติมที่ฉันได้รับจาก: http://logback.qos.ch/manual/filters.html แต่ก็ยังสับสน ... โปรดทราบว่าฉันถามว่าทำไมไม่ใช่วิธีใช้ดังนั้นนี่จึงไม่ซ้ำกับ: แนวทางปฏิบัติที่ดีที่สุดสำหรับการใช้ Markers ใน SLF4J / Logback UPDATEดูเหมือนว่าเมื่อคุณใช้เครื่องหมายคุณต้องเขียนโค้ด Java ที่กำหนดเองแทนการกำหนดค่าในไฟล์ XMLหรือ. คุณสมบัติ ... อัปเดต 2จากhttp://logback.qos.ch/manual/appenders.html#OnMarkerEvaluator Marker notifyAdmin = MarkerFactory.getMarker("NOTIFY_ADMIN"); logger.error(notifyAdmin, "This is a serious an error requiring the admin's attention", new Exception("Just testing"));
110 java  logging  log4j  slf4j  logback 

17
การตั้งค่าระดับบันทึกของข้อความที่รันไทม์ใน slf4j
เมื่อใช้ log4j Logger.log(Priority p, Object message)วิธีนี้จะพร้อมใช้งานและสามารถใช้เพื่อบันทึกข้อความที่ระดับบันทึกที่กำหนดที่รันไทม์ เรากำลังใช้ข้อเท็จจริงนี้และเคล็ดลับนี้เพื่อเปลี่ยนเส้นทาง stderr ไปยังคนตัดไม้ที่ระดับบันทึกเฉพาะ slf4j ไม่มีlog()วิธีการทั่วไปที่ฉันสามารถหาได้ หมายความว่าไม่มีวิธีดำเนินการข้างต้นหรือไม่?
102 java  logging  log4j  slf4j 

1
เอกสารรูปแบบตัวเข้ารหัสการล็อกแบ็คอยู่ที่ไหน
ฉันได้อ่านเอกสารการล็อกแบ็คทั้งหมดแล้วและไม่พบเอกสารประกอบการกำหนดค่ารูปแบบตัวเข้ารหัสเมื่อทำการบันทึกเช่น: <encoder> <pattern>%d{HH:mm:ss.SSS} %-4relative %-5level %logger{35} - %msg%n</pattern> </encoder> ฉันต้องการตาราง (เช่นเดียวกับที่ log4j มี) อธิบายตัวเลือกต่างๆในการกำหนดค่ารูปแบบ เอกสารของรูปแบบอยู่ที่ไหน? อาจถูกกำหนดไว้ในโครงการอื่น?
97 java  logging  log4j  logback 

6
การกำหนดค่าการบันทึกไฮเบอร์เนตโดยใช้ไฟล์กำหนดค่า Log4j XML?
ฉันไม่พบเอกสารใด ๆ เกี่ยวกับวิธีกำหนดค่าการบันทึกของ Hibernate โดยใช้ไฟล์การกำหนดค่าสไตล์ XML สำหรับ Log4j เป็นไปได้หรือไม่หรือฉันใช้ไฟล์คอนฟิกูเรชันสไตล์คุณสมบัติเพื่อควบคุมการบันทึกของไฮเบอร์เนต หากใครมีข้อมูลหรือลิงค์ไปยังเอกสารก็จะขอบคุณ แก้ไข: เพื่อชี้แจงฉันกำลังมองหาตัวอย่างของไวยากรณ์ XML จริงเพื่อควบคุมไฮเบอร์เนต EDIT2: นี่คือสิ่งที่ฉันมีในไฟล์กำหนดค่า XML ของฉัน <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <appender name="console" class="org.apache.log4j.ConsoleAppender"> <param name="Threshold" value="info"/> <param name="Target" value="System.out"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{ABSOLUTE} [%t] %-5p %c{1} - %m%n"/> </layout> </appender> <appender …


3
ความสำคัญของคุณสมบัติ log4j.rootLogger ในไฟล์ log4j.properties คืออะไร? จะเกิดอะไรขึ้นถ้าฉันไม่ใช้คุณสมบัตินี้?
ความสำคัญของlog4j.rootLoggerคุณสมบัติในlog4j.propertiesไฟล์คืออะไร? จะเกิดอะไรขึ้นถ้าฉันไม่ใช้คุณสมบัตินี้? ตัวอย่าง : # Set root logger level to DEBUG and its only appender to A1. log4j.rootLogger=DEBUG, A1 # A1 is set to be a ConsoleAppender. log4j.appender.A1=org.apache.log4j.ConsoleAppender จะเกิดอะไรขึ้นถ้าฉันตั้งค่าคุณสมบัตินี้เป็นERRORโหมด

4
ฉันจะกำหนดค่า log4j ในคลาสทดสอบ JUnit ได้ที่ไหน
เมื่อดูกรณีทดสอบ JUnit ล่าสุดที่ฉันเขียนฉันเรียกว่าวิธี BasicConfigurator.configure () ของ log4j ภายในตัวสร้างคลาส ทำงานได้ดีสำหรับการรันคลาสเดียวนั้นจากคำสั่ง "run as JUnit test case" ของ Eclipse แต่ฉันรู้ว่ามันไม่ถูกต้อง: ฉันค่อนข้างแน่ใจว่าชุดทดสอบหลักของเราเรียกใช้คลาสเหล่านี้ทั้งหมดจากกระบวนการเดียวดังนั้นการกำหนดค่า log4j ควรจะเกิดขึ้นที่ใดที่หนึ่ง แต่ฉันยังคงต้องเรียกใช้กรณีทดสอบด้วยตัวเองในบางครั้งซึ่งในกรณีนี้ฉันต้องการกำหนดค่า log4j ฉันควรวางการเรียกการกำหนดค่าไว้ที่ใดเพื่อให้รันเมื่อกรณีทดสอบทำงานแบบสแตนด์อโลน แต่ไม่ใช่เมื่อกรณีทดสอบถูกเรียกใช้เป็นส่วนหนึ่งของชุดใหญ่
85 java  logging  junit  log4j 

7
จะส่ง java.util.logging ไปที่ log4j ได้อย่างไร?
ฉันมีแอปพลิเคชันที่มีอยู่ซึ่งทำการบันทึกทั้งหมดกับ log4j เราใช้ไลบรารีอื่น ๆ จำนวนมากที่ใช้ log4j ด้วยหรือล็อกกับ Commons Logging ซึ่งลงท้ายด้วยการใช้ log4j ภายใต้การครอบคลุมในสภาพแวดล้อมของเรา การอ้างอิงอย่างหนึ่งของเรายังบันทึกกับ slf4j ซึ่งทำงานได้ดีเนื่องจากในที่สุดก็มอบหมายให้ log4j เช่นกัน ตอนนี้ฉันต้องการเพิ่ม ehcache ในแอปพลิเคชันนี้สำหรับความต้องการในการแคช ehcache เวอร์ชันก่อนหน้าใช้การบันทึกแบบคอมมอนส์ซึ่งจะทำงานได้อย่างสมบูรณ์ในสถานการณ์นี้ แต่ในเวอร์ชัน 1.6-beta1พวกเขาได้ลบการพึ่งพาการบันทึกแบบคอมมอนส์และแทนที่ด้วย java.util.logging แทน ไม่ค่อยคุ้นเคยกับการบันทึก JDK ในตัวที่มีอยู่ใน java.util.logging มีวิธีง่ายๆในการส่งข้อความบันทึกไปยัง JUL ที่บันทึกกับ log4j หรือไม่ดังนั้นฉันจึงสามารถใช้การกำหนดค่าที่มีอยู่และตั้งค่าสำหรับการบันทึกที่กำลังจะมาถึง จาก ehcache? เมื่อดู javadocs สำหรับ JUL ดูเหมือนว่าฉันสามารถตั้งค่าตัวแปรสภาพแวดล้อมจำนวนมากเพื่อเปลี่ยนLogManagerการใช้งานที่ใช้และอาจใช้เพื่อห่อ log4j Loggers ในLoggerคลาสJUL นี่เป็นแนวทางที่ถูกต้องหรือไม่? น่าขันที่การใช้การบันทึก JDK ในตัวของห้องสมุดจะทำให้ปวดหัวเมื่อ (ส่วนใหญ่) …

4
การหมุนรายวันและการเก็บข้อมูลรายเดือน Log4j กับ appender ไฟล์ใด ๆ
เป็นไปได้ไหมที่ผู้ใช้ log4j ต่อท้ายจะเขียนบันทึกด้วยเวลาการหมุนและการ จำกัด การเก็บรักษาที่เฉพาะเจาะจง เป้าหมายจะเป็น: มีล็อกไฟล์สำหรับแต่ละวัน สร้างไฟล์ใหม่ตอนเที่ยงคืนสำหรับบันทึกใหม่ เพื่อเก็บล็อกไฟล์และลบออกโดยอัตโนมัติหลังจากระยะเวลาหนึ่ง ดังนั้นลบไฟล์บันทึกที่เก่ากว่า X วัน (เช่น 30 วัน) ดูเหมือนว่าการหมุนเป็นไปได้ แต่ไม่สามารถ จำกัด เวลาการเก็บรักษาได้ด้วย log4j รุ่น log4j คือ 1.2
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.