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

Simple Logging Facade สำหรับ Java (SLF4J) ทำหน้าที่เป็นส่วนหน้าหรือเลเยอร์นามธรรมอย่างง่ายสำหรับเฟรมเวิร์กการบันทึกต่างๆ โปรดใส่แท็กสำหรับเฟรมเวิร์กการบันทึกจริงที่คุณใช้หากคุณพยายามกำหนดค่าการบันทึกสำหรับแอปพลิเคชันของคุณ

30
SLF4J: โหลดคลาส“ org.slf4j.impl.StaticLoggerBinder” ไม่สำเร็จ
แอ็พพลิเคชันของฉันจะถูกปรับใช้บนทั้ง tcServer และ WebSphere 6.1 แอปพลิเคชั่นนี้ใช้ ehCache และต้องใช้ slf4j ในการพึ่งพา เป็นผลให้ฉันเพิ่ม slf4j-api.jar (1.6) jar ในบันเดิลไฟล์สงครามของฉัน แอปพลิเคชันทำงานได้ดีใน tcServer ยกเว้นข้อผิดพลาดต่อไปนี้: 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. แต่เมื่อฉันปรับใช้ใน WebSphere java.lang.NoClassDefFoundError: org.slf4j.impl.StaticLoggerBinderฉันได้รับ ยังมาพร้อมกับ Failed to load class "org.slf4j.impl.StaticMDCBinder" ฉันได้ตรวจสอบ classpaths ของทั้งสองแอ็พพลิเคชันเซิร์ฟเวอร์แล้วและไม่มี …
619 java  websphere  slf4j 

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

2
slf4j: วิธีบันทึกข้อความที่จัดรูปแบบ, อาร์เรย์วัตถุ, ข้อยกเว้น
วิธีการที่ถูกต้องในการบันทึกข้อความที่มีประชากรและการติดตามสแต็กของข้อยกเว้นคืออะไร? logger.error( "\ncontext info one two three: {} {} {}\n", new Object[] {"1", "2", "3"}, new Exception("something went wrong")); ฉันต้องการที่จะผลิตผลลัพธ์ที่คล้ายกับนี้: context info one two three: 1 2 3 java.lang.Exception: something went wrong stacktrace 0 stacktrace 1 stacktrace ... slf4j เวอร์ชั่น 1.6.1
275 java  exception  logging  slf4j 

14
SLF4J: คลาสพา ธ ประกอบด้วยการเชื่อม SLF4J หลายรายการ
ฉันได้รับข้อผิดพลาดดังต่อไปนี้ ดูเหมือนว่ามีกรอบการบันทึกหลายเฟรมที่ผูกกับ sl4j ไม่แน่ใจว่าจะแก้ไขปัญหานี้อย่างไร ความช่วยเหลือใด ๆ ที่ชื่นชมอย่างมาก SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/C:/Users/admin/.m2/repository/org/slf4j/slf4j-log4j12/1.6.4/slf4j-log4j12-1.6.4.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/C:/Users/admin/.m2/repository/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
206 maven-2  slf4j 

4
การกำหนดค่า Log4j Loggers โดยทางโปรแกรม
ฉันกำลังพยายามใช้ SLF4J (มีlog4jผลผูกพัน) เป็นครั้งแรก ฉันต้องการกำหนดค่า Loggers 3 ชื่อที่แตกต่างกันซึ่งสามารถส่งคืนโดย LoggerFactory ซึ่งจะบันทึกระดับต่าง ๆ และส่งข้อความไปยัง appenders ที่ต่างกัน: Logger 1 "FileLogger" บันทึก DEBUG และต่อท้าย DailyRollingFileAppender Logger 2 "TracingLogger" บันทึกการสืบค้นกลับ + และผนวกเข้ากับ JmsAppender Logger 3 "ErrorLogger" จะบันทึก ERROR + และต่อท้ายไปอีกอัน JmsAppender นอกจากนี้ฉันต้องการให้พวกเขากำหนดค่าทางการเขียนโปรแกรม (ใน Java, ตรงข้ามกับ XML หรือlog4j.propertiesไฟล์) ฉันคิดว่าปกติฉันจะกำหนดLoggerบางสิ่งเหล่านี้ในรหัส bootstrapping เช่นinit()วิธีการ อย่างไรก็ตามเนื่องจากฉันต้องการใช้slf4j-log4jฉันสับสนเกี่ยวกับที่ฉันสามารถกำหนด loggers และทำให้พวกเขาสามารถใช้ classpath ฉันไม่เชื่อว่านี่เป็นการละเมิดวัตถุประสงค์พื้นฐานของ …
191 java  logging  log4j  slf4j 

4
วิธีกำหนดค่า slf4j-simple
API 1.7 และ slf4j-simple เป็นการใช้งาน ฉันหาวิธีกำหนดระดับการบันทึกด้วยชุดค่าผสมนี้ไม่พบ ใครช่วยได้บ้าง
166 java  logging  slf4j 

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 

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 แต่ดูเหมือนจะไม่มีผล …

11
คุณกำหนดค่าการบันทึกใน Hibernate 4 เพื่อใช้ SLF4J ได้อย่างไร
ใช้ไฮเบอร์เนต 3.x slf4jสำหรับการบันทึก ไฮเบอร์เนตใช้ 4.xJBoss การเข้าสู่ระบบ. ฉันกำลังเขียนแอปพลิเคชันแบบสแตนด์อโลนซึ่งใช้ Hibernate 4 และ SLF4J สำหรับการบันทึก ฉันจะกำหนดค่า Hibernate เพื่อเข้าสู่ SLF4J ได้อย่างไร หากไม่สามารถทำได้ฉันจะกำหนดค่าการบันทึกของไฮเบอร์เนตได้อย่างไร ส่วนคู่มือ Hibernate 4.1 เกี่ยวกับการบันทึกเริ่มต้นด้วยคำเตือนว่าเป็น ... ล้าสมัยโดยสิ้นเชิง Hibernate ใช้ JBoss Logging ตั้งแต่ 4.0 สิ่งนี้จะได้รับการจัดทำเป็นเอกสารเมื่อเราย้ายเนื้อหานี้ไปยังคู่มือสำหรับนักพัฒนา ... พูดถึง SLF4J ต่อไปก็ไม่มีประโยชน์ ทั้งคู่มือเริ่มต้นใช้งานหรือคู่มือสำหรับนักพัฒนาซอฟต์แวร์ไม่ได้พูดถึงการบันทึกเลย หรือไม่คำแนะนำการโยกย้าย ฉันได้ค้นหาเอกสารเกี่ยวกับ jboss-logging แล้ว แต่ไม่พบเลย หน้า GitHub จะเงียบและ JBoss ของหน้าโครงการชุมชนไม่ได้แม้กระทั่งรายการ JBoss การเข้าสู่ระบบ ฉันสงสัยว่าตัวติดตามข้อบกพร่องของโครงการอาจมีปัญหาใด ๆ …

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 

23
การสร้างด้วย @ Slf4j และ Intellij ของ Lombok: ไม่พบบันทึกสัญลักษณ์
ฉันมีโครงการ maven ที่สร้างขึ้นโดยไม่มีปัญหาจากบรรทัดคำสั่ง อย่างไรก็ตามเมื่อฉันสร้างด้วย IntelliJ ฉันได้รับข้อผิดพลาด: java: FileName.java:89: cannot find symbol symbol : variable log ไม่มีบันทึกที่กำหนดหรือนำเข้าในไฟล์ java แต่มีไฟล์ @Slf4j final public class FileName { คำสั่งก่อนเนื้อหาคลาสซึ่งควรกำหนดคลาสล็อก ในหน้าต่างโครงสร้างโปรเจ็กต์คลาสสำหรับ: Maven: org.slf4j:jcl-over-slf4j:1.6.1 Maven: org.slf4j:slf4j-api:1.6.6 Maven: org.slf4j:slf4j-log4j12:1.6.6 Maven: org.slf4j:slf4j-simple:1.6.6 แสดงอยู่ภายใต้ไลบรารีและระบุว่าดาวน์โหลดแล้วและพร้อมใช้งาน มีความคิดว่าทำไมสิ่งนี้ถึงสร้างด้วย maven ผ่านทางบรรทัดคำสั่ง แต่ไม่ใช่ผ่าน IntelliJ และจะแก้ไขปัญหาได้อย่างไร

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 …

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