2011-09-02 4 views
0

J'ai une servlet qui doit enregistrer le message avec log4j. Sous environnement de développement (Windows + Eclipse + tomcat), le log4j fonctionne. Lorsque j'ai déployé le servlet en production (AIX + websphere), aucun journal n'a été généré.log4j ne se connecte pas à AIX avec websphere

Je ne sais pas ce qui s'est passé. Quelle est la raison possible? Le fichier war a été créé par eclipse après avoir vérifié que la fonction de journalisation fonctionnait dans l'environnement de développement. Je veux rassembler plus d'indices avant de le déployer à nouveau en production.

Le programme Java n'a fourni aucun indice. J'ai regardé le SystemOut.log, et les loggers de log4j ont été initialisés avec succès, cependant, ils n'ont pas dit que quelque chose s'était mal passé au sujet des fichiers journaux.

je soupçonne que 2 raisons:

1) le répertoire d'enregistrement ont des privilèges drwxr-xr-x, peut-être le programme java ne pas le droit d'y créer le fichier?

2) Les fichiers log4j.properties étaient étranges. Quand j'ai regardé AIX via vi, j'ai découvert qu'il y avait un^M après chaque fin de ligne. Probablement unix n'a pas besoin de ce caractère de retour chariot. Peut-être que ce personnage de^M a gâché les choses?

EDIT: J'ai découvert qu'il existe un autre fichier journal appelé SystemErr.log. Il contient le message d'erreur:

[01/09/11 17: 07: 43: 086 HKT] 00000013 SystemErr R log4j: ERREUR setFile (null, true) appel a échoué.

[01/09/11 17: 07: 43: 086 HKT] 00000013 SystemErr R java.io.FileNotFoundException: /bps/log/BpsPdfBill.log (l'accès au fichier pe rmissions ne permettent pas l'action spécifiée .)

Répondre

2

Comment vous sentez-vous en train d'être une servlet? :-)

Sur le sujet: si vous placez votre fichier journal en dehors des dossiers où WAS décompresse votre fichier war, qui en est le propriétaire? Pour pouvoir écrire dans le répertoire avec ces permissions, l'utilisateur was doit être le propriétaire (et doit avoir l'autorisation d'accéder aux dossiers parents aussi.)

Les caractères^M sont les nouvelles lignes présentes dans DOS/windows, pour UNIX ils ne sont pas un problème (juste une nuisance), vous pouvez ajouter une tâche dans votre fichier de construction Ant pour supprimer les nouvelles lignes avant de compresser l'archive de guerre.

+0

oh mon dieu ...... juste typo .....;) – lamwaiman1988

+0

Donc, mon meilleur pari serait de définir une autorisation 777 à un répertoire externe, ou d'utiliser un répertoire dans le fichier war comme répertoire de journal? – lamwaiman1988

+0

S'il vous plaît voir ma modification. Merci. – lamwaiman1988