2012-02-28 7 views
1

Je rencontre des problèmes pour trouver mes fichiers journaux physiques. J'utilise les classes java.util.logging. J'ai une classe de bac à sable trivial contenant le code suivant:Où est mon fichier journal?

package test; 

import java.util.logging.Level; 
import java.util.logging.Logger; 

public class TestLogging { 

public static void main(String[] args) { 

@SuppressWarnings("unused") 
TestLogging test = new TestLogging(); 
} 

public TestLogging() { 

System.out.println(getClass().getClassLoader().getResource("logging.properties")); 

Logger logger = Logger.getLogger("test"); 
logger.logp(Level.CONFIG, "myClass", "myMethod", "Monday"); 
logger.logp(Level.FINE, "myClass", "myMethod", "Tuesday"); 
logger.logp(Level.FINER, "myClass", "myMethod", "Wednesday"); 
logger.logp(Level.FINEST, "myClass", "myMethod", "Thursday"); 
logger.logp(Level.INFO, "myClass", "myMethod", "Friday"); 
logger.logp(Level.SEVERE, "myClass", "myMethod", "Saturday"); 
logger.logp(Level.WARNING, "myClass", "myMethod", "Sunday");  
} 
} 

Mon fichier logging.properties (encore une fois, dépouillé de commentaires) est la suivante:

handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandler 
.level= ALL 
java.util.logging.FileHandler.pattern = %h/java%u.log 
java.util.logging.FileHandler.limit = 50000 
java.util.logging.FileHandler.count = 1 
java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter 
java.util.logging.ConsoleHandler.level = INFO 
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter 
x.y.level = SEVERE 
x.y.z.level = WARNING 
org.sscce.level = WARNING 
org.sscce.baz3.level = INFO 

Le fichier logging.properties est dans le classpath sous Utilisateur Entrées dans la configuration d'exécution pour cette classe.

Lorsque j'exécute la classe, je reçois ceci sur la console:

file:/C:/Program%20Files/Java/jdk1.6.0_18/jre/lib/logging.properties 
28-Feb-2012 2:05:55 PM myClass myMethod 
INFO: Friday 
28-Feb-2012 2:05:56 PM myClass myMethod 
SEVERE: Saturday 
28-Feb-2012 2:05:56 PM myClass myMethod 
WARNING: Sunday 

J'ai demandé le niveau de journalisation sur la console pour être INFO et c'est tout ce que j'ai sur la console de sorte qu'une partie semble être travail. Mais quand je cherche mes logs java physiques dans% h, qui est C: \ Documents and Settings [Mon identifiant Windows], il n'y a pas de fichiers qui suivent le modèle javaX.log où X est un entier.

Qu'est-ce que je fais mal? Le programme ne voit-il pas le fichier logging.properties? Ou les valeurs sont-elles définies d'une manière ou d'une autre pour empêcher l'écriture d'un journal physique?

J'ai besoin d'aide pour le débogage parce que je ne vois rien d'anormal. N'importe quels preneurs?

+1

vous réalisez 'des chemins avec des espaces + Java == douleur et souffrance'! –

+0

duplication possible de [Comment configurer la journalisation java en utilisant un fichier de propriétés? (java.util.logging)] (http://stackoverflow.com/questions/960099/how-to-set-up-java-logging-using-a-properties-file-java-util-logging) –

Répondre

2

Pour trouver vos fichiers journaux, vous devez savoir que %h représente la valeur de votre variable user.home.

Pour obtenir cela, exécutez: System.out.println("%h: " + System.getProperty("user.home"));

Vous devez définir les propriétés fichier que vous utilisez avec un System.property aussi bien. Voici une façon de le faire, sinon il utilise un défaut qui n'est pas là où vous pensez probablement que c'est.

java -Djava.util.logging.config.file=mylogging.properties 

Vous pouvez également le faire par programmation avant de commencer à utiliser les classes de journalisation.

également

paths with spaces + Java == pain and suffering 

et toujours utiliser / comme séparateur de chemin, Java va faire la bonne chose, même sous Windows.

+0

Je ' Je me suis cogné la tête de temps à autre sur un problème de chemin avec espace intégré, mais ça fait longtemps. Je suppose que c'est peut-être ça. Je peux le prouver en copiant le fichier logging.properties dans un emplacement sans espace, comme C: \ et réessayez. Je n'ai pas réalisé que je devais ajouter le paramètre java -D aux paramètres de l'application. Je vais essayer ça aussi. Pouvez-vous me rappeler quelque chose? Si je veux spécifier le chemin d'accès complet au fichier de propriétés dans Windows, puis-je utiliser C: \ myDir \ logging.properties ou dois-je doubler les barres obliques inverses et mettre le tout entre guillemets juste pour être sûr? –

+0

utilisez toujours '/' en Java pour les séparateurs de chemins, même dans Windows, cela fonctionne. Enveloppez tout dans '" 'juste pour être sûr –

+0

Peu importe, j'ai copié logging.properties dans C: \ et j'ai écrit le paramètre exactement comme ceci dans les paramètres VM: -Djava.util.logging.config.file = C: \ logging.properties.Le code fonctionne parfaitement maintenant et j'ai un journal montrant tous les 7 jours de la semaine exactement où il est censé être. Merci Jarrod! Maintenant, je sais ce que je dois faire pour que ce travail fonctionne comme je le veux. –