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

สิ่งอำนวยความสะดวกการบันทึกที่ทันสมัยสำหรับโปรแกรมที่ใช้ Java พร้อมคุณสมบัติใหม่มากมายเมื่อเทียบกับ Log4J และ java.util.logging

5
ทำไมไม่ใช้ java.util.logging?
เป็นครั้งแรกในชีวิตของฉันฉันพบว่าตัวเองอยู่ในตำแหน่งที่ฉันเขียน Java API ที่จะเปิดแหล่งที่มา หวังว่าจะรวมอยู่ในโครงการอื่น ๆ อีกมากมาย สำหรับการบันทึกฉัน (และแน่นอนคนที่ฉันทำงานด้วย) มักจะใช้ JUL (java.util.logging) และไม่เคยมีปัญหาใด ๆ อย่างไรก็ตามตอนนี้ฉันต้องเข้าใจในรายละเอียดเพิ่มเติมสิ่งที่ฉันควรทำเพื่อการพัฒนา API ของฉัน ฉันได้ทำการวิจัยเกี่ยวกับเรื่องนี้และข้อมูลที่ฉันได้รับฉันเพิ่งสับสนมากขึ้น ดังนั้นโพสต์นี้ ตั้งแต่ฉันมาจาก JUL ฉันลำเอียง ความรู้ที่เหลือของฉันไม่ใหญ่มาก จากการวิจัยที่ฉันทำฉันได้พบกับเหตุผลเหล่านี้ว่าทำไมคนถึงไม่ชอบ JUL: "ผมเริ่มพัฒนาในชวานานก่อนที่ดวงอาทิตย์ปล่อยออกกรกฎาคมและมันก็เป็นเพียงแค่ง่ายสำหรับผมที่จะดำเนินการกับการเข้าสู่ระบบกรอบ-X มากกว่าที่จะเรียนรู้สิ่งใหม่" อืมมม ฉันไม่ได้ล้อเล่นนี่เป็นสิ่งที่ผู้คนพูด ด้วยเหตุผลนี้เราทุกคนสามารถทำได้ COBOL (อย่างไรก็ตามฉันสามารถเกี่ยวข้องกับการเป็นเพื่อนขี้เกียจอย่างแน่นอน) "ผมไม่ชอบชื่อของระดับการเข้าสู่ระบบในกรกฎาคมว่า" ตกลงอย่างจริงจังนี่เป็นเพียงเหตุผลไม่เพียงพอที่จะแนะนำการพึ่งพาใหม่ "ผมไม่ชอบรูปแบบมาตรฐานของการส่งออกจากกรกฎาคม" อืมมม นี่เป็นเพียงการกำหนดค่า คุณไม่จำเป็นต้องทำอะไรกับโค้ดที่ชาญฉลาด (จริงแล้วย้อนกลับไปในสมัยก่อนคุณอาจต้องสร้างคลาส Formatter ของคุณเองเพื่อทำให้ถูกต้อง) "ผมใช้ห้องสมุดอื่น ๆ ที่ยังใช้การบันทึกกรอบ-X ดังนั้นฉันคิดว่ามันง่ายขึ้นเพียงเพื่อการใช้งานที่หนึ่ง" นี่คือการโต้แย้งแบบวงกลมใช่ไหม? เหตุใด 'ทุกคน' จึงใช้การบันทึกเฟรมเวิร์ก X …
351 java  logging  slf4j  logback 

5
ระดับการบันทึก - การย้อนกลับ - กฎของหัวแม่มือเพื่อกำหนดระดับการบันทึก
ฉันใช้logbackในโครงการปัจจุบันของฉัน มีการบันทึกหกระดับ: ข้อผิดพลาด TRACE DEBUG INFO WARN OFF ฉันกำลังมองหากฎง่ายๆเพื่อกำหนดระดับการบันทึกสำหรับกิจกรรมทั่วไป ตัวอย่างเช่นหากเธรดถูกล็อคควรตั้งค่าข้อความบันทึกเป็นระดับดีบักหรือระดับข้อมูล หรือหากมีการใช้ซ็อกเก็ตควรระบุรหัสเฉพาะของมันที่ระดับการดีบักหรือระดับการติดตาม ฉันจะขอบคุณคำตอบด้วยตัวอย่างเพิ่มเติมสำหรับแต่ละระดับการบันทึก
258 logging  logback 

12
ฉันจะกำหนดค่า Logback ให้ล็อกระดับต่าง ๆ สำหรับตัวบันทึกไปยังปลายทางอื่นได้อย่างไร
ฉันจะกำหนดค่าLogbackให้ล็อกระดับต่าง ๆ สำหรับตัวบันทึกไปยังปลายทางอื่นได้อย่างไร ตัวอย่างเช่นเมื่อกำหนดค่า Logback ดังต่อไปนี้จะบันทึกINFOข้อความกลับไปที่STDOUTและERRORข้อความถึงSTDERRหรือไม่ (โปรดทราบว่าตัวอย่างนี้เป็นตัวอย่างที่logback-examples/src/main/java/chapters/configuration/sample4.xmlแสดงในบทที่ 3: การกำหนดค่า Logback ) <configuration> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern> %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n </pattern> </encoder> </appender> <appender name="STDERR" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern> %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n </pattern> </encoder> <target>System.err</target> </appender> <!-- What is the effective level of "chapters.configuration"? --> …
156 java  logging  logback 

6
log4j vs logback [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ปรับปรุงคำถามนี้ เรากำลังใช้ log4j ที่อยู่เบื้องหลังเสื้อคลุมตัวเอง เราวางแผนที่จะใช้คุณสมบัติอื่น ๆ อีกมากมายในตอนนี้ เราควรอัพเดทเป็น logback หรือไม่? (ฉันหมายถึงกรอบไม่ใช่ซุ้มเช่น SLF4J)
152 java  logging  log4j  logback 

3
เข้าสู่ระบบเพื่อบันทึกข้อความที่แตกต่างกันไปยังสองไฟล์
ฉันใช้ logback / slf4j เพื่อทำการบันทึกของฉัน ฉันต้องการแยกวิเคราะห์ไฟล์บันทึกของฉันเพื่อวิเคราะห์ข้อมูลบางอย่างดังนั้นแทนที่จะแยกวิเคราะห์ไฟล์ขนาดใหญ่ที่ดี (ส่วนใหญ่ประกอบด้วยคำสั่ง debug) ฉันต้องการมีอินสแตนซ์ของตัวบันทึกสองตัวที่แต่ละล็อกไปยังไฟล์แยกกัน หนึ่งชุดสำหรับการวิเคราะห์และอีกชุดสำหรับการบันทึกอเนกประสงค์ ไม่มีใครรู้ว่าเป็นไปได้ด้วย Logback หรือคนตัดไม้อื่น ๆ สำหรับเรื่องนั้น?
146 java  logging  logback  slf4j 

8
จะใช้ MDC กับเธรดพูลได้อย่างไร
ในซอฟต์แวร์ของเราเราใช้ MDC อย่างกว้างขวางเพื่อติดตามสิ่งต่างๆเช่นรหัสเซสชันและชื่อผู้ใช้สำหรับคำขอเว็บ ทำงานได้ดีในขณะที่ทำงานในเธรดดั้งเดิม อย่างไรก็ตามมีหลายสิ่งหลายอย่างที่ต้องดำเนินการในพื้นหลัง เพื่อที่เราจะใช้java.concurrent.ThreadPoolExecutorและjava.util.Timerคลาสพร้อมกับบริการดำเนินการ async ที่ผ่านการม้วนตัวเอง บริการทั้งหมดเหล่านี้จัดการเธรดพูลของตนเอง นี่คือสิ่งที่คู่มือ Logbackได้พูดเกี่ยวกับการใช้ MDC ในสภาพแวดล้อมดังกล่าว: สำเนาของบริบทการวินิจฉัยที่แมปไม่สามารถสืบทอดโดยเธรดผู้ปฏิบัติงานจากเธรดเริ่มต้นได้เสมอไป นี่เป็นกรณีที่เมื่อใช้ java.util.concurrent.Executors สำหรับการจัดการเธรด ตัวอย่างเช่นเมธอด newCachedThreadPool สร้าง ThreadPoolExecutor และเช่นเดียวกับรหัสการรวมเธรดอื่น ๆ มันมีตรรกะการสร้างเธรดที่สลับซับซ้อน ในกรณีเช่นนี้ขอแนะนำให้เรียกใช้ MDC.getCopyOfContextMap () บนเธรด (ต้นแบบ) ต้นฉบับก่อนส่งงานไปยังผู้ปฏิบัติการ เมื่องานรันตามการดำเนินการครั้งแรกควรเรียกใช้ MDC.setContextMapValues ​​() เพื่อเชื่อมโยงสำเนาที่เก็บไว้ของค่า MDC ดั้งเดิมกับเธรดที่ได้รับการจัดการ Executor ใหม่ สิ่งนี้จะใช้ได้ แต่เป็นการง่ายมากที่จะลืมการเพิ่มสายเหล่านั้นและไม่มีวิธีที่ง่ายในการจดจำปัญหาจนกว่าจะสายเกินไป เครื่องหมายเดียวกับ Log4j คือคุณได้รับข้อมูล MDC ที่ขาดหายไปในบันทึกและด้วย Logback คุณจะได้รับข้อมูล MDC ที่เก่า (เนื่องจากเธรดในพูลของดอกยางนั้นได้รับ …
146 java  logging  slf4j  logback  mdc 

10
วิธีป้องกัน logback ไม่ให้แสดงสถานะของตนเองในตอนเริ่มต้นของทุกบันทึก
ดูเหมือนว่าจะเป็นข้อผิดพลาดที่ไม่ระมัดระวัง แต่ฉันไม่สามารถหาสาเหตุได้ การบันทึกด้วย logback / slf4j (เวอร์ชันล่าสุด slf4j-api-1.6.1, logback core / classic 0.9.24) การกำหนดค่าบันทึกที่ง่ายที่สุดสำหรับการทดสอบคือ: <configuration> <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> <layout class="ch.qos.logback.classic.PatternLayout"> <!-- DONT USE THIS FORMATTER FOR LIVE LOGGING THE %L LINE NUMBER OUTPUTTER IS SLOW --> <pattern>%le %-1r [%c{1}:%L] %m%n</pattern> </layout> </appender> <root level="DEBUG"> <appender-ref ref="stdout" /> </root> </configuration> ทุกการตั้งค่าการบันทึกเริ่มต้นด้วยบรรทัดสถานะภายในของ …
145 logback 

6
วิธีการเปลี่ยนระดับการบันทึกรากโดยทางโปรแกรมสำหรับการย้อนกลับ
ฉันมีไฟล์ logback.xml ต่อไปนี้: <configuration debug="true"> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <root level="debug"> <appender-ref ref="STDOUT" /> </root> </configuration> ตอนนี้เมื่อเกิดเหตุการณ์เฉพาะฉันต้องการเปลี่ยนระดับของ root logger จากการดีบักเป็นข้อผิดพลาดโดยทางโปรแกรม ฉันไม่สามารถใช้การทดแทนตัวแปรได้ซึ่งเป็นข้อบังคับที่ฉันต้องทำภายในรหัส จะทำอย่างไร? ขอบคุณ
144 java  logging  logback 

4
แนวทางปฏิบัติที่ดีที่สุดสำหรับการใช้ Markers ใน SLF4J / Logback
เราใช้ชุดค่าผสม SLF4J + Logback ที่โปรเจ็กต์ของเรามาระยะหนึ่งแล้วและค่อนข้างพอใจกับมัน แต่กลยุทธ์การบันทึกของเราค่อนข้างง่ายโดยใช้คนตัดไม้ตามคลาสที่ตรงไปตรงมาและไม่มีของแปลก ๆ เช่น MDC หรือ Markers สิ่งที่ฉันอยากรู้คือมีใครในชุมชนใช้คุณสมบัติเหล่านี้จริงหรือไม่และจะใช้เพื่อปรับปรุงการบันทึก / การกรองอย่างไร ฉันสนใจเป็นพิเศษว่าจะใช้[1]เครื่องหมายสำหรับการบันทึกได้อย่างไร พวกเขาโจมตีฉันว่าเป็นคุณลักษณะที่ค่อนข้างเรียบร้อยสำหรับการเพิ่มบริบททางความหมายลงในการบันทึกเช่นในขณะที่ชั้นเรียนอาจจัดการกับข้อกังวลหลายประการเราอาจใช้เครื่องหมายงาน / ข้อกังวลเฉพาะเพื่อแยกแยะข้อความบันทึก อะไรคือแนวทางปฏิบัติที่ดีที่สุดอนุสัญญาหรือกลยุทธ์ในการสร้างและใช้เครื่องหมายในการบันทึก ปรับปรุง:ผมคิดว่าสิ่งที่ผมรู้สึกหลังจากที่เป็นไม่มากทำไมการใช้เครื่องหมาย แต่เป็นวิธีการที่ส่วนหนึ่ง - จะมีแนวทางปฏิบัติที่ดีของตัวบ่งชี้การตั้งชื่อ (เช่นการใช้ข้อความธรรมดาที่มีช่องว่างหรือขีด / ขีด / เครื่องหมายวรรคตอนคั่นคำหลักชื่อลักษณะ ) ควรมีกลุ่ม "ชื่อมาตรฐาน" ประเภทหนึ่งซึ่งตั้งชื่อตามหน้าที่ทางธุรกิจ คำถามที่ฉันสามารถหาได้ด้วยตัวเอง แต่ถ้าฉันต้องการใช้คุณสมบัติเหล่านี้อย่างเป็นระบบและแนะนำให้รู้จักกับทีมนักพัฒนาก็ควรมีแนวทางที่เป็นทางการเกี่ยวกับ ... [1] - โดยการถามถึงวิธีใช้เครื่องหมายฉันไม่ได้ถามถึงวิธีใช้ API จริงๆ (มันค่อนข้างตรงไปตรงมา) - ฉันค่อนข้างจะอ้างถึงระดับทั่วไปของวิธีตั้งค่าการบันทึกโดยใช้เครื่องหมายอย่างสม่ำเสมอ
128 java  logging  slf4j  logback  markers 

8
เกิดอะไรขึ้นกับการเข้าสู่ระบบใน Java? [ปิด]
ตามที่กล่าวไว้ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบถาม & ตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจก่อให้เกิดการถกเถียงโต้แย้งการสำรวจความคิดเห็นหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงได้และอาจเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อรับคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา เหตุใดจึงต้องใช้หนึ่งในแพ็คเกจต่อไปนี้แทนแพ็กเกจอื่น ๆ การบันทึก Java การบันทึกคอมมอนส์ log4j SLF4J Logback
117 java  logging  log4j  logback  slf4j 

10
SLF4J: ไม่สามารถโหลดคลาส“ org.slf4j.impl.StaticLoggerBinder” ความผิดพลาด
เกี่ยวกับEclipse IDE ( Indigo , JunoและKepler (เวอร์ชัน 32 และ 64 บิต)) แพลตฟอร์ม : Windows , Ubuntu , Mac เวอร์ชัน m2e : 1.1.0.20120530-0009 , 1.2.0.20120903-1050 , 1.3.0.20130129-0926 , 1.4.0.20130601-0317 ข้อมูลทั่วไป ข้อผิดพลาดข้างต้นเกิดขึ้นหลังจากอัปเดต m2e เป็นเวอร์ชัน 1.1 โดยการลบ m2e 1.1 และย้อนกลับไปที่ m2e 1.0 ทุกอย่างทำงานได้ดี ฉันพยายามทำซ้ำปัญหาใน Windows และ Ubuntu และทำให้ฉันมีข้อผิดพลาดเดียวกัน มีการทดสอบการกำหนดค่าต่างๆของ slf4j-api และ logback แต่ดูเหมือนจะไม่มีผล …

3
ความเข้ากันไม่ได้ของกรอบการบันทึก
ฉันกำลังสร้างแอป Java ขนาดเล็กและหวังว่าจะใช้ Logback สำหรับการบันทึก แอพของฉันมีการพึ่งพาโปรเจ็กต์เก่ากว่าที่ทำการบันทึกผ่านไฟล์ org.apache.commons | com.springsource.org.apache.commons.logging | 1.1.1 ... ดังนั้นแผนของฉันคือใช้ org.slf4j | jcl-over-slf4j | 1.5.6 ... เพื่อเปลี่ยนเส้นทางการบันทึก JCL ไปที่ org.slf4j | slf4j-api | 1.6.0 ... และท้ายที่สุดก็คือ ch.qos.logback | logback-classic | 0.9.22 ch.qos.logback | logback-core | 0.9.22 ดังนั้นแอปของฉันจึงสามารถเข้าสู่ระบบผ่านการล็อกกลับผ่าน slf4j API ในขณะที่รหัสไลบรารีเก่าสามารถล็อกเข้าสู่ตำแหน่งเดียวกันผ่านการเปลี่ยนเส้นทาง อนิจจาส่งผลให้ java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;Ljava/lang/Throwable;)V at org.apache.commons.logging.impl.SLF4JLocationAwareLog.info(SLF4JLocationAwareLog.java:141) ฉันได้ลองใช้ตัวเลขการตรวจสอบที่สูงขึ้นและต่ำลงในไหเหล่านี้และยังขุดผ่านเอกสาร API …

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 

6
XML schema หรือ DTD สำหรับ logback.xml?
ฉันได้เห็นการอภิปรายหลายครั้งบนอินเทอร์เน็ตเกี่ยวกับความยอดเยี่ยมที่จะมี XML schema หรือ DTD สำหรับไฟล์ logback.xml อย่างน้อยก็มีการตรวจสอบความถูกต้องขั้นพื้นฐานและการเติมอัตโนมัติใน IDE เช่น IDEA หรือ Eclipse แต่ฉันไม่เคยเห็น วิธีแก้ปัญหาใด ๆ รึเปล่า?
109 java  xsd  logback  dtd  xml 

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.