Logback ne pouvez pas trouver logback.xml même s'il existe (dans le classpath)
J'ai un problème avec logback. Je l'ai installé (à l'aide de maven) et tout semble bien fonctionner sauf que Logback rapports, il ne peut pas trouver le fichier de configuration (mais je suis en mesure de vous connecter à la console en utilisant la valeur par défaut de l'enregistreur de configuration).
[#|2013-07-03T07:55:30.843+0200|INFO|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=124;_ThreadName=Thread-2;|07:54:39,844 |-INFO au ch.la qualité de service.logback.classique.LoggerContext[par défaut] - ne Pouvait PAS trouver de ressources [logback.groovy]
07:54:39,844 |-INFO au ch.la qualité de service.logback.classique.LoggerContext[par défaut] - ne Pouvait PAS trouver de ressources [logback-test.xml]
07:54:39,844 |-INFO au ch.la qualité de service.logback.classique.LoggerContext[par défaut] - ne Pouvait PAS trouver de ressources [logback.xml]
07:54:39,847 |-INFO au ch.la qualité de service.logback.classique.LoggerContext[par défaut] - mise en place de la configuration par défaut.
|#]
J'ai mis le fichier de configuration (appelé logback.xml) dans le src/main/resources
dossier de mon artefact Maven (qui est une GUERRE).
Fait intéressant, si je tente de charger la configuration du chemin de classe, je réussir:
Reader r = new InputStreamReader(getClass().getClassLoader().getResourceAsStream("logback.xml"));
StringWriter sw = new StringWriter();
char[] buffer = new char[1024];
for (int n; (n = r.read(buffer)) != -1; )
sw.write(buffer, 0, n);
String str = sw.toString();
System.out.println(str);
Qui imprime mon exemple de fichier de configuration:
[#|2013-07-03T07:55:30.844+0200|INFO|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=124;_ThreadName=Thread-2;|<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="STDOUT" />
</root> </configuration>|#]
Mon pom.xml
comporte les entrées suivantes:
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.0.13</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.0.13</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.5</version>
</dependency>
Qui est emballé comme un fichier WAR (à l'intérieur d'un fichier EAR). L'emplacement de l'logback.xml à l'intérieur du fichier WAR est comme suit: WEB-INF/classes/logback.xml
Quelqu'un a une idée de quel est le problème avec ma configuration?
Merci beaucoup pour votre aide
stupidSheep
OriginalL'auteur stupidSheep | 2013-07-03
Vous devez vous connecter pour publier un commentaire.
L'emplacement dans le fichier WAR est correct,
WEB-INF/classes
.La logback documentation de la configuration parle où l'logback.xml le fichier peut être situé à l'intérieur d'une guerre, mais il ne mentionne rien à ce sujet une OREILLE.
Pourriez-vous s'il vous plaît essayez les informations à ce lien? Je me demande si elle a besoin d'être emballé dans l'OREILLE d'une manière spécifique.
(edit: deuxième lien supprimé, n'a pas fonctionné)
Vous êtes le bienvenu, monsieur mouton, et merci pour la question, je n'ai jamais pensé à l'endroit où logback.xml doit être situé à l'intérieur de l'OREILLE, et donc maintenant je sais aussi 🙂
OriginalL'auteur vikingsteve
Logback invoque très semblable code pour le code dans votre exemple, c'est à dire getClassLoader().getResourceAsStream("logback.xml"). Si logback ne peut pas trouver logback.xml puis il faut que la ressource n'est pas visible pour le chargeur de classe qui a chargé le logback classe. Ce chargeur de classe est probablement différente de la classe loader chargé votre code de test qui peut trouver logback.xml.
OriginalL'auteur Ceki
Donc j'ai eu le même problème lorsque j'ai eu logback.xml dans le classpath, mais n'a pas été inclus dans le processus de construction. J'ai récemment opté pour gradle. J'ai eu des problèmes au départ avec mes fichiers de ressources non inclus dans la construction, même si je expressément ajouté src/main/resources pour sourceSet de construire.gradle.
Donc ma solution à l'époque était de mettre les types de fichiers à inclure:
Quelque temps a passé et j'ai remarqué que mon journalisation config n'a pas été appliquée. J'ai passé beaucoup de temps à peaufiner le journal et à la recherche du problème. J'ai vite réalisé que le fichier n'a pas été inclus.
Je me suis souvenu que je devais mettre le type de fichiers à inclure. J'ai ajouté le type xml et cela a fonctionné.
OriginalL'auteur BWC semaJ