Esquema XML ou DTD para logback.xml?

108

Já vi várias discussões na rede sobre como seria ótimo ter um esquema XML ou DTD para o arquivo logback.xml para ter pelo menos a validação básica e o preenchimento automático em IDEs como IDEA ou Eclipse, mas nunca vi qualquer solução.

Você fez?

Vladislav Rastrusny
fonte
38
No que diz respeito à validação e autocompletar, veja as respostas abaixo ... mas para fazer o eclipse parar de me avisar, eu uso um velho e confiável DTD de <!DOCTYPE configuration>. Não suporto avisos sobre meus projetos, TOC, eu acho.
Lucas
6
@Lucas Não é tão TOC, eu diria. Avisos irrelevantes podem obscurecer avisos importantes. Aconteceu comigo.
raphinesse
2
Eu sou um pouco compulsivo assim também, mas adicionar esta linha <! DOCTYPE configuration> como você sugeriu não ajudou em nada para remover o aviso para mim ... alguma idéia ??
Marc
1
Depois de adicionar a linha <! DOCTYPE configuration>, é necessário acionar a validação, por exemplo, através do menu de contexto 'Validate'.
Manuel

Respostas:

31

Não é suportado oficialmente de acordo com a documentação , mas existe um projeto independente para fornecer Schema para Logback

No entanto, devido à extrema flexibilidade da configuração do Logback, o Schema não pode suportar todas as opções de configuração possíveis.

Sergey
fonte
1
Essa solução funciona. Basta colocar logback.xsdno mesmo diretório logback.xmle adicioná-lo ao seu projeto manualmente. No IntelliJ, por exemplo, você acessa Settings > Languages & Frameworks > Schemas and DTDse clica no "+" verde para adicionar um recurso externo. Defina "URI" como http://ch.qos.logback/xml/ns/logbacke "Local" como o local de logback.xsd.
Jonathan Landrum,
1
Acabei de criar um encurtador de url para o arquivo logback.xsd deste projeto e está funcionando conforme o esperado. Você pode usarxsi:schemaLocation="http://ch.qos.logback/xml/ns/logback https://git.io/logback.xsd"
Osguima3
81

Em junho de 2011, a documentação oficial afirma

Como ficará claro, a sintaxe dos arquivos de configuração de logback é extremamente flexível. Como tal, não é possível especificar a sintaxe permitida com um arquivo DTD ou um Esquema XML.

Houve um breve tópico sobre o assunto, mas não parecia ir a lugar nenhum.

Eugene Yokota
fonte
13
Da mesma forma que a língua inglesa é extremamente flexível, portanto, não possui regras gramaticais ???? Que desculpa esfarrapada!
Ken Alton
77

Apenas para se livrar do aviso irritante no Eclipse, adicione <!DOCTYPE xml>depois <?xml version="1.0" encoding="UTF-8"?>.

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

Para se livrar do ícone de ponto de exclamação após corrigi-lo, pode ser necessário acionar a validação novamente clicando com o botão direito no arquivo e escolhendo Validate.

Adrian Ber
fonte
3
Como diz o comentário de @lucas, use <!DOCTYPE configuration>. Funciona para mimVersion: Oxygen.2 Release (4.7.2) Build id: 20171218-0600
Shamal Karunarathne
Para se livrar do ícone de ponto de exclamação após corrigi-lo, como disse @Manuel, acione a validação novamente clicando com o botão direito do mouse no arquivo e escolhendo "Validar".
Noumenon
1
@Noumenon adicionarei seu comentário à minha resposta. Obrigado!
Adrian Ber
2
<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.padual.com/java/logback.xsd">

do GitHub "Uma definição de esquema XML para logback" https://github.com/nkatsar/logback-XSD

Ricardo Padua Soares
fonte
Embora isso possa teoricamente responder à pergunta, seria preferível incluir as partes essenciais da resposta aqui e fornecer o link para referência.
Rohit Gupta
1
Quão completo o suporte existe nesse repo?
Vladislav Rastrusny
Para os próximos anos, como eu, a localização xsd anterior não é mais válida. Você pode consultar git.io/logback.xsd conforme mencionado em uma resposta anterior
gavard.e
0

Uma resposta ligeiramente diferente que permite o preenchimento automático do eclipse é:

<?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
fonte