2010-10-20 7 views
0

J'ai une application Java s'exécutant sur des machines Windows.écriture de log4j dans un partage Windows

Longue histoire courte, nous avons une convention pour savoir où l'on place les fichiers journaux par machine:

\\%COMPUTERNAME%\Logs\<AppNameHere> 

Je configuré mon application Java au démarrage avec -Dmachine.name = "% COMPUTERNAME%", puis dans mon fichier log4j.properties je précise

log4j.appender.R.File = \\${machine.name}\Logs\MyVerySpecialApplicationName\log.log 

Mais je ne vois pas ce répertoire/fichier montrer quand je lance ma demande (la première chose que l'application n'est enregistrer un message de démarrage).

Donc, je pense que log4j/java ne peut pas traiter ce chemin UNC spécifique à Windows.

Quelqu'un d'autre rencontre ce problème et trouve un moyen de contourner le problème?

Répondre

2

J'ai regardé le code source de Log4j. Il semble utiliser java.io.File pour contenir une référence au nom de fichier que vous spécifiez.

En outre, les Javadocs pour java.io.File indiquent que les chemins UNC sont pris en charge pour le constructeur de File (que Log4J utilise). Donc, en surface, il n'y a aucune raison pour que votre configuration ne fonctionne pas; mais - et c'est le point important à noter - Java a un long historique de problèmes avec les E/S de fichiers sur SMB (ce qui est à peu près ce que vous essayez de faire).

Mon conseil:

  1. Lancez votre application en spécifiant -Dlog4j.debug=true. La propriété système fera en sorte que Log4J crache beaucoup d'informations de débogage pour vous aider à suivre le problème.
  2. Essayez d'utiliser la même configuration, sauf que, au lieu de faire référence au fichier avec un préfixe UNC, il suffit de mapper les lecteurs (je comprends que vous utilisez Windows). Si les choses fonctionnent avec des lecteurs mappés, cela signifie que quelque chose en utilisant le préfixe UNC est la source du problème (bien que j'en doute).

Dites-nous comment les choses se déroulent. Bonne chance. Isaac

+0

Merci, je vais essayer cela momentanément! – ecoffey

0

Vous devez mettre deux jeu pour chacun d'eux comme dans cette configuration ci-dessous

log4j.appender.Log_Arquivo.File=\\\\172.31.88.168\\server10\\soma_10\\logs\\soma_10.log

J'espère que cela vous aide.

Questions connexes