log4j.les propriétés d'être ignoré
J'ai un Java EE 6 Guichet application déployée avec maven avec IntelliJ IDEA 9.0.3 sur glassfish v3.0.1. J'utilise slf4j-log4j12-1.5.6 avec slf4j-api-1.5.8 et log4j-1.2.16 pour la journalisation.
Il fonctionnait très bien lorsque je déployé par le biais de netbeans ou eclipse, mais quand je suis déployer avec IntelliJ IDEA mon log4j.les propriétés de fichier est ignoré et glassfish l'exploitation forestière occupe de mon journal des messages. Je ne pense pas que l'IDÉE n'a rien à faire avec elle, quelque chose d'autre doit avoir changé, je ne peux pas comprendre ce qui s'.
J'ai vérifié que mon log4j.fichier de propriétés est dans mon WEB-INF/classes répertoire et le slf4j/log4j pots sont dans le dossier WEB-INF/lib de ma guerre. Est-il une sorte de configuration, je suis absent pour faire ce travail?
grâce.
edit: mis à Jour avec plus d'informations, posté pom dépendances.
Voici la partie de mon pom.xml:
<!-- Guava -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>r05</version>
</dependency>
<!-- Test -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.glassfish.extras</groupId>
<artifactId>glassfish-embedded-all</artifactId>
<version>3.0</version>
<scope>test</scope>
</dependency>
<!-- Java EE 6 -->
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>bean-validator</artifactId>
<version>3.0-JBoss-4.0.0.Beta3</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
<!-- Wicket -->
<dependency>
<groupId>org.apache.wicket</groupId>
<artifactId>wicket</artifactId>
<version>1.4.9</version>
</dependency>
<dependency>
<groupId>org.apache.wicket</groupId>
<artifactId>wicket-auth-roles</artifactId>
<version>1.4.9</version>
</dependency>
<dependency>
<groupId>org.jboss.weld</groupId>
<artifactId>weld-wicket</artifactId>
<version>1.0.1-Final</version>
</dependency>
<!-- Hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>3.5.1-Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-annotations</artifactId>
<version>3.5.1-Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-commons-annotations</artifactId>
<version>3.2.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>3.5.1-Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId>
<version>3.5.1-Final</version>
</dependency>
<!-- Database -->
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>8.4-701.jdbc4</version>
</dependency>
<!-- Logging -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.5.6</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
</dependencies>
- Pourriez-vous poster log4j.debug=true sortie?
- Je set-Dlog4j.debug dans la gfv3 jvm paramètres toutefois, il a rapidement été ignoré.
- Ce n'Système.getProperty("log4j.defaultinitoverride") de retour?
Vous devez vous connecter pour publier un commentaire.
Mise à jour: j'ai essayé de reproduire le problème. J'ai créé un simple Guichet de projet (même version que vous):
Qui a un simple log4j.les propriétés de journalisation vers la sortie standard.
Alors:
repositories
etpluginRepositories
javax.servlet
dépendance pour que le build passerembedded-glassfish
plugin pour tester le toutslf4j-api
dans ledependencyManagement
élément de contrôle bien la version de dépendances transitives.Le plein pom.xml ressemble à ça (donc n'importe qui peut reproduire):
Et quand je lance le projet intégré à l'-glassfish plugin:
et l'accès http://localhost:8080/server dans un navigateur, j'obtiens mes journaux dans la sortie standard comme prévu:
Je me demande si c'est représentatif ou pas.
slf4j-log4j12.jar n'est pas un remplacement pour log4j.jar, slf4j-log4j12.jar est un liaison pour log4J la version 1.2, vous avez encore besoin de log4j.jar. À partir de la SLF4J documentation:
Je me demande comment vous avez obtenu ce travail sous NetBeans et Eclipse.
J'ai eu exactement le même problème.
Log4j seul fonctionne très bien:
Mais si j'essaie d'utiliser Slf4j-dessus d'elle, puis mon "src/ressources/log4j."propriétés de fichier n'est pas trouvé plus, même si Maven ajouter pour un répertoire qui est sur le chemin de la classe.
Donc, cela ne fonctionne pas hors de la boîte:
Pour le faire fonctionner, vous devez l'ajouter explicitement le "log4j.propriétés de" le chemin de la classe ou de dire au serveur où le trouver! Une façon d'y parvenir est (cet exemple est sur Windows):
Dans Eclipse (si c'est ce que vous utilisez), vous pouvez ajouter la même ligne de votre Configuration d'Exécution /VM arguments.
J'ai eu les mêmes problèmes. La solution est simple - l'abattage des dépendances avant de glassfish sur le chemin de la classe.
Note que les anciens Maven2 versions ont des problèmes avec le classpath de cohérence. J'utilise 2.2.1 qui ont ce problème résolu (il a été fixé dans 2.0.9, je pense).
Je suggère la suppression de toutes les slf4j dépendances et de changer votre code d'enregistrement pour utiliser l'API Log4j directement (si ce n'est pas trop de travail, je ne sais pas la taille de votre projet). Une fois que cela fonctionne, pensez à vérifier si vous avez vraiment besoin de la flexibilité offerte par slf4j. Si vous le faites, de sélectionner la bonne version de slf4j (slf4j-log4j12 pourrait ne pas être la bonne utilisation de log4j 1.2.16) et de l'intégrer dans.
J'ai rencontré slf4j récemment, et à la fin enlevé complètement, parce que j'ai couru dans les mêmes problèmes de configuration.
Ont un look à la log4j manuel. La section "Initialisation par Défaut de la Procédure de" décrit comment log4j vais essayer de trouver le fichier d'initialisation. Peut-être que vous pouvez essayer quelques-uns de ces options pour obtenir les choses fonctionnent.
Les deux plus probables sont les choses qui viennent à l'esprit sont:
Depuis qu'elle travaille dans certains scénarios de déploiement, je soupçonne votre guerre de l'emballage lors de l'exécution via Maven est le problème. Les points ci-dessus devraient vous aider à le confirmer.
J'ai d'enregistrement suivantes dépendances :
sous /src/main/resources/j'ai un logback.xml définir les différents aspects (appenders,..). C'est ramassé par maven et copié dans WEB-INF/classes
de l'espoir qui a aidé
Je serais en faveur de Adriaan Koster réponse. Si votre pure log4j ne fonctionne pas, cependant, essayez les solutions suivantes. Créer simple de la classe comme ceci
...et mettre un point d'arrêt dans org.apache.log4j.les aides.Chargeur#getResource méthode. Il essaie de tirer de l'log4j.xml à partir du chargeur de classe:
De sorte que vous pouvez facilement regarder à l'intérieur du chargeur de classe et de voir quels sont les chemins qu'il utilise (et pourquoi il ne peut pas trouver votre log4j.xml).
Il est également très important que log4j de la bibliothèque a été compilé après tous les modules des bibliothèques utilisées dans le projet. Si vous ne définissez le dernier objet, les journaux du plus tard modules/bibliothèques ne sont pas affichées dans un façon standard pour log4j.les propriétés.