XML schema หรือ DTD สำหรับ logback.xml?


109

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

รึเปล่า?


38
สำหรับการตรวจสอบความถูกต้องและการทำให้สมบูรณ์อัตโนมัติโปรดดูคำตอบด้านล่าง ... แต่เพื่อให้คราสหยุดเตือนฉันฉันใช้ DTD เก่าที่เชื่อถือได้ของ<!DOCTYPE configuration>. ไม่สามารถรับคำเตือนเกี่ยวกับโครงการของฉัน OCD ฉันเดา
Lucas

6
@ Lucas ไม่ใช่ OCD อย่างนั้นฉันจะพูด คำเตือนที่ไม่เกี่ยวข้องอาจเป็นเงาของคำเตือนที่สำคัญ เพิ่งเกิดขึ้นกับฉัน
raphinesse

2
ฉันก็ค่อนข้างบีบบังคับเช่นกัน แต่การเพิ่มบรรทัด <! DOCTYPE configuration> นี้ตามที่คุณแนะนำไม่ได้ลบคำเตือนสำหรับฉัน ... ความคิดใด ๆ ??
Marc

1
หลังจากเพิ่มบรรทัด <! DOCTYPE configuration> เราต้องทริกเกอร์การตรวจสอบความถูกต้องเช่นผ่านเมนูบริบท 'Validate'
Manuel

คำตอบ:


32

ไม่ได้รับการสนับสนุนอย่างเป็นทางการตามเอกสารแต่มีโครงการอิสระที่จัดเตรียมSchema สำหรับ Logback

อย่างไรก็ตามเนื่องจากการกำหนดค่า Logback มีความยืดหยุ่นสูง Schema จึงไม่สามารถรองรับตัวเลือกการกำหนดค่าที่เป็นไปได้ทั้งหมด


1
วิธีนี้ใช้ได้ผล เพียงใส่logback.xsdในไดเร็กทอรีเดียวกันlogback.xmlและเพิ่มลงในโปรเจ็กต์ของคุณด้วยตนเอง ตัวอย่างเช่นใน IntelliJ คุณต้องไปที่Settings > Languages & Frameworks > Schemas and DTDsและคลิกสีเขียว "+" เพื่อเพิ่มทรัพยากรภายนอก ชุด "URI" เพื่อhttp://ch.qos.logback/xml/ns/logbackและ "ตำแหน่ง" logback.xsdเป็นสถานที่ตั้งของ
Jonathan Landrum

1
ฉันเพิ่งสร้างตัวย่อ URL สำหรับไฟล์ logback.xsd ของโปรเจ็กต์นี้และมันใช้งานได้ตามที่คาดไว้ คุณสามารถใช้xsi:schemaLocation="http://ch.qos.logback/xml/ns/logback https://git.io/logback.xsd"
Osguima3

81

ณ เดือนมิถุนายน 2554 เอกสารอย่างเป็นทางการระบุ

ดังที่จะชัดเจนไวยากรณ์ของไฟล์คอนฟิกูเรชันการล็อกแบ็คมีความยืดหยุ่นอย่างมาก ด้วยเหตุนี้จึงไม่สามารถระบุไวยากรณ์ที่อนุญาตด้วยไฟล์ DTD หรือ XML Schema

มีกระทู้สั้น ๆตามหัวข้อ แต่ดูเหมือนจะไม่ไปไหน


13
ในทำนองเดียวกับที่ภาษาอังกฤษมีความยืดหยุ่นสูงจึงไม่มีกฎเกณฑ์ทางไวยากรณ์ ???? ช่างเป็นข้อแก้ตัว!
Ken Alton

77

เพียงเพื่อกำจัดของคำเตือนที่น่ารำคาญใน Eclipse เพิ่มหลัง<!DOCTYPE xml><?xml version="1.0" encoding="UTF-8"?>

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>

Validateเพื่อกำจัดของไอคอนเครื่องหมายอัศเจรีย์หลังจากที่คุณแก้ไขปัญหานั้นคุณอาจจำเป็นต้องเรียกตรวจสอบอีกครั้งโดยการคลิกขวาที่ไฟล์และเลือก


3
ตามความคิดเห็นของ @lucas บอกใช้<!DOCTYPE configuration>. มันได้ผลสำหรับฉันVersion: Oxygen.2 Release (4.7.2) Build id: 20171218-0600
Shamal Karunarathne

หากต้องการกำจัดไอคอนเครื่องหมายอัศเจรีย์หลังจากที่คุณแก้ไขแล้วดังที่ @Manuel กล่าวให้เรียกใช้การตรวจสอบความถูกต้องอีกครั้งโดยคลิกขวาที่ไฟล์แล้วเลือก "Validate"
Noumenon

1
@ นูเมนนอนฉันจะเพิ่มความคิดเห็นของคุณในคำตอบของฉัน ขอบคุณ!
Adrian Ber

3

โครงการที่เป็นอิสระกล่าวโดย Sergey ครอบคลุมมากที่สุดของความต้องการของฉัน

แต่องค์ประกอบบางอย่างที่หายไปฉันเพิ่มพวกเขาบนทางแยกของตัวเองบนhttps://github.com/nkatsar/logback-XSD หวังว่าพวกเขาจะรวมเข้ากับโปรเจ็กต์หลัก


ตอนนี้ได้รวมเข้าด้วยกันแล้ว ตามที่Github เครือข่ายกราฟ , enricopulatzo ‘s คีมาน่าจะเป็นแหล่งที่ร่ำรวยที่สุด
Olivier Cailloux

2
<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.padual.com/java/logback.xsd">

จาก GitHub "ข้อกำหนดของ XML Schema สำหรับการล็อกแบ็ก" https://github.com/nkatsar/logback-XSD


ในขณะที่สิ่งนี้อาจตอบคำถามในทางทฤษฎีแต่ควรรวมส่วนสำคัญของคำตอบไว้ที่นี่และระบุลิงก์สำหรับการอ้างอิง
Rohit Gupta

1
repo นั้นมีการสนับสนุนที่สมบูรณ์แค่ไหน?
Vladislav Rastrusny

สำหรับหลายปีที่ผ่านมาเช่นฉันตำแหน่ง xsd ก่อนหน้าไม่ถูกต้องอีกต่อไป คุณสามารถอ้างถึงgit.io/logback.xsdตามที่กล่าวไว้ในคำตอบก่อนหน้า
gavard.e

0

คำตอบที่แตกต่างกันเล็กน้อยที่อนุญาตให้เติมข้อความอัตโนมัติของคราสคือ:

<?xml version="1.0" encoding="UTF-8"?>
<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://www.padual.com/java/logback.xsd" 
    debug="true" packagingData="true" scan="true" scanPeriod="30 seconds">
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.