Schemat XML czy DTD dla logback.xml?

108

Widziałem kilka dyskusji w sieci na temat tego, jak wspaniale byłoby mieć schemat XML lub DTD dla pliku logback.xml, aby mieć przynajmniej bardzo podstawową walidację i automatyczne uzupełnianie w IDE, takich jak IDEA lub Eclipse, ale nigdy nie widziałem dowolne rozwiązanie.

Czy ty?

Vladislav Rastrusny
źródło
38
Jeśli chodzi o sprawdzanie poprawności i autouzupełnianie, patrz odpowiedzi poniżej ... ale aby zaćmienie przestało mnie ostrzegać, używam zaufanego starego DTD <!DOCTYPE configuration>. Nie znoszę ostrzeżeń o moich projektach, chyba OCD.
Lucas
6
@Lucas Nie tak OCD powiedziałbym. Nieistotne ostrzeżenia mogą powodować przesłanie ważnych ostrzeżeń. Właśnie mi się przydarzyło.
raphinesse
2
Ja też jestem trochę nałogowy, ale dodanie tej linii <! DOCTYPE configuration>, jak sugerujesz, nie zrobiło nic, aby usunąć ostrzeżenie dla mnie ... jakikolwiek pomysł?
Marc
1
Po dodaniu wiersza <! DOCTYPE configuration> należy wywołać walidację np. Poprzez menu kontekstowe „Validate”.
Manuel,

Odpowiedzi:

31

Nie jest oficjalnie obsługiwany zgodnie z dokumentacją , ale istnieje niezależny projekt zapewniający schemat logowania

Jednak ze względu na dużą elastyczność konfiguracji Logback Schemat nie obsługuje wszystkich możliwych opcji konfiguracji.

Siergiej
źródło
1
To rozwiązanie działa. Po prostu umieść logback.xsdw tym samym katalogu co logback.xmli dodaj go ręcznie do swojego projektu. Na przykład w IntelliJ można przejść do Settings > Languages & Frameworks > Schemas and DTDsi kliknąć zielony „+”, aby dodać zasób zewnętrzny. Ustaw „URI” na http://ch.qos.logback/xml/ns/logbacki „Lokalizacja” na lokalizację logback.xsd.
Jonathan Landrum
1
Właśnie utworzyłem skracacz adresów URL dla pliku logback.xsd tego projektu i działa zgodnie z oczekiwaniami. Możesz użyćxsi:schemaLocation="http://ch.qos.logback/xml/ns/logback https://git.io/logback.xsd"
Osguima3
81

W czerwcu 2011 roku oficjalna dokumentacja Zjednoczone

Jak okaże się jasne, składnia plików konfiguracyjnych logowania zwrotnego jest niezwykle elastyczna. W związku z tym nie jest możliwe określenie dozwolonej składni za pomocą pliku DTD lub schematu XML.

Na ten temat był krótki wątek , ale najwyraźniej nigdzie nie prowadził.

Eugene Yokota
źródło
13
W ten sam sposób, w jaki język angielski jest niezwykle elastyczny, dlatego nie ma żadnych reguł gramatycznych ???? Co za wymówka!
Ken Alton,
77

Aby pozbyć się irytującego ostrzeżenia w Eclipse, dodaj <!DOCTYPE xml>po <?xml version="1.0" encoding="UTF-8"?>.

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

Aby pozbyć się ikony wykrzyknika po jej naprawieniu, może być konieczne ponowne uruchomienie sprawdzania poprawności, klikając plik prawym przyciskiem myszy i wybierając Validate.

Adrian Ber
źródło
3
Jak mówi komentarz @lucas, użyj <!DOCTYPE configuration>. U mnie to działaVersion: Oxygen.2 Release (4.7.2) Build id: 20171218-0600
Shamal Karunarathne,
Aby pozbyć się ikony wykrzyknika po jej naprawieniu, jak powiedział @Manuel, uruchom ponownie sprawdzanie poprawności, klikając plik prawym przyciskiem myszy i wybierając opcję „Sprawdź poprawność”.
Noumenon
1
@Noumenon Dodam Twój komentarz do mojej odpowiedzi. Dzięki!
Adrian Ber
2
<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.padual.com/java/logback.xsd">

z GitHub „Definicja schematu XML do logowania zwrotnego” https://github.com/nkatsar/logback-XSD

Ricardo Padua Soares
źródło
Chociaż może to teoretycznie odpowiedzieć na pytanie, lepiej byłoby zawrzeć tutaj zasadnicze części odpowiedzi i podać link do odniesienia.
Rohit Gupta
1
Jak pełne wsparcie jest w tym repozytorium?
Vladislav Rastrusny
Dla tych, którzy nadchodzą lata po takich jak ja, poprzednia lokalizacja xsd nie jest już ważna. Możesz odnieść się do git.io/logback.xsd, jak wspomniano w poprzedniej odpowiedzi
gavard. E
0

Nieco inną odpowiedzią, która umożliwia autouzupełnianie zaćmienia, jest:

<?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">
raisercostin
źródło