XML-Schema oder DTD für logback.xml?

108

Ich habe im Internet mehrere Diskussionen darüber gesehen, wie großartig es wäre, ein XML-Schema oder eine DTD für die Datei logback.xml zu haben, um zumindest die grundlegende Validierung und automatische Vervollständigung in IDEs wie IDEA oder Eclipse zu erhalten, aber ich habe es nie gesehen irgendeine Lösung.

Hast du?

Vladislav Rastrusny
quelle
38
Was die Validierung und automatische Vervollständigung betrifft, siehe Antworten unten ... aber damit Eclipse aufhört, mich zu warnen, verwende ich eine vertrauenswürdige alte DTD von <!DOCTYPE configuration>. Ich kann keine Warnungen bei meinen Projekten ertragen, OCD, denke ich.
Lucas
6
@ Lucas Nicht so OCD würde ich sagen. Irrelevante Warnungen können wichtige Warnungen beschatten. Ist mir gerade passiert.
Raphinesse
2
Ich bin auch ein bisschen zwanghaft, aber das Hinzufügen dieser Zeile <! DOCTYPE configuration>, wie Sie vorschlagen, hat nichts dazu beigetragen, die Warnung für mich zu entfernen ... irgendeine Idee?
Marc
1
Nach dem Hinzufügen der Zeile <! DOCTYPE configuration> muss die Validierung ausgelöst werden, z. B. über das Kontextmenü 'Validate'.
Manuel

Antworten:

31

Es wird gemäß der Dokumentation nicht offiziell unterstützt , aber es gibt ein unabhängiges Projekt, um Schema for Logback bereitzustellen

Aufgrund der extremen Flexibilität der Logback-Konfiguration kann Schema jedoch nicht alle möglichen Konfigurationsoptionen unterstützen.

Sergey
quelle
1
Diese Lösung funktioniert. Legen Sie es einfach logback.xsdin dasselbe Verzeichnis wie logback.xmlund fügen Sie es manuell zu Ihrem Projekt hinzu. In IntelliJ Settings > Languages & Frameworks > Schemas and DTDsklicken Sie beispielsweise auf das grüne "+", um eine externe Ressource hinzuzufügen. Setzen Sie "URI" auf http://ch.qos.logback/xml/ns/logbackund "Location" auf den Ort von logback.xsd.
Jonathan Landrum
1
Ich habe gerade einen URL-Shortener für die logback.xsd-Datei dieses Projekts erstellt, der wie erwartet funktioniert. Sie können verwendenxsi:schemaLocation="http://ch.qos.logback/xml/ns/logback https://git.io/logback.xsd"
Osguima3
81

Ab Juni 2011 wird die offizielle Dokumentation Staaten

Wie noch deutlich werden wird, ist die Syntax von Logback-Konfigurationsdateien äußerst flexibel. Daher ist es nicht möglich, die zulässige Syntax mit einer DTD-Datei oder einem XML-Schema anzugeben.

Es gab einen kurzen Thread zu diesem Thema, der aber nirgendwo hin zu gehen schien.

Eugene Yokota
quelle
13
Ebenso wie die englische Sprache extrem flexibel ist, hat sie keine grammatikalischen Regeln ???? Was für eine Ausrede!
Ken Alton
77

Nur um die nervige Warnung in Eclipse loszuwerden, fügen Sie <!DOCTYPE xml>nach <?xml version="1.0" encoding="UTF-8"?>.

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

Um das Ausrufezeichensymbol nach dem Beheben zu entfernen, müssen Sie die Überprüfung möglicherweise erneut auslösen, indem Sie mit der rechten Maustaste auf die Datei klicken und auswählen Validate.

Adrian Ber
quelle
3
Wie der Kommentar von @lucas sagt, verwenden Sie <!DOCTYPE configuration>. Es funktioniert für michVersion: Oxygen.2 Release (4.7.2) Build id: 20171218-0600
Shamal Karunarathne
Um das Ausrufezeichen-Symbol zu entfernen, nachdem Sie es behoben haben, wie @Manuel sagte, lösen Sie die Validierung erneut aus, indem Sie mit der rechten Maustaste auf die Datei klicken und "Validieren" wählen.
Noumenon
1
@ Noumenon Ich werde Ihren Kommentar zu meiner Antwort hinzufügen. Vielen Dank!
Adrian Ber
2
<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.padual.com/java/logback.xsd">

von GitHub "Eine XML-Schemadefinition für die Rückmeldung" https://github.com/nkatsar/logback-XSD

Ricardo Padua Soares
quelle
Während dies theoretisch die Frage beantworten kann, wäre es vorzuziehen , die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen.
Rohit Gupta
1
Wie umfassend ist die Unterstützung in diesem Repo?
Vladislav Rastrusny
Für diejenigen, die Jahre später wie ich kommen, ist der vorherige xsd-Speicherort nicht mehr gültig. Sie können auf git.io/logback.xsd verweisen, wie in einer früheren Antwort erwähnt
gavard.e
0

Eine etwas andere Antwort, die die automatische Vervollständigung von Eclipse ermöglicht, lautet:

<?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">
Rosercostin
quelle