web-dev-qa-db-fra.com

Java Logging - Où est mon fichier journal?

Je n'arrive pas à trouver mes fichiers journaux. 

J'utilise Java Logging - Java.util.logging - dans Eclipse 3.7.1 sous Windows XP. Les lignes pertinentes de mon fichier logging.properties sont:

handlers= Java.util.logging.FileHandler, Java.util.logging.ConsoleHandler
.level=INFO
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

Autant que je sache, après avoir exécuté ces deux lignes:

Logger logger = Logger.getLogger("test"); 
logger.logp(Level.INFO, "myClass", "myMethod", "Alcatraz"); 

mon fichier journal doit être dans C:\Documents and Settings\[My Windows ID]\javaX.logX est un entier. 

J'ai 5 fichiers Java.log différents dans ce répertoire, de Java0.log à Java4.log, mais aucun d'entre eux ne contient mon enregistrement de journal ni même un enregistrement avec la date du jour. J'ai fait des recherches sur Google et j'ai trouvé Traçage et journalisation , ce qui implique que mes journaux devraient se trouver à un emplacement différent, c:\Documents and Settings\[My Windows ID]\Application Data\Sun\Java\Deployment\log. Il y a un fichier, nommé plugin5581819941091650582.log, mais il est essentiellement vide:

<?xml version="1.0" encoding="windows-1252" standalone="no"?>
<!DOCTYPE log SYSTEM "logger.dtd">
<log>
</log>

Sa date de création est la semaine dernière. (Je ne suis pas sûr du processus qui l'a créé; je ne l'ai certainement pas créé explicitement.)

Alors, où est mon fichier journal alors? Je ne vois nulle part où regarder. 

De plus, est-ce que quelqu'un sait quand les modifications apportées à logging.properties prennent effet? Si je changeais le niveau de journalisation ou le FileHandler.pattern, que devrait-il se passer avant que mon programme ne voit les changements? Enregistrer simplement les modifications dans logging.properties n'est clairement pas suffisant. Dois-je redémarrer Eclipse? Ou redémarrer l'ordinateur? Juste curieux. Ce n’est pas aussi grave pour moi que de savoir où se trouve réellement mon fichier journal. 

23
Anonymous Coward

Où se trouve votre fichier logging.properties? Il devrait être disponible dans la racine du classpath. En tant que vérification de sécurité, que le code suivant imprime-t-il?

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

Si le code est dans un contexte static, utilisez

System.out.println(ClassName.class.getClassLoader().getResource("logging.properties"));
17
sjr

Le fichier .log se trouve dans votre dossier\workspace.metadata. J'utilise Eclipse 4.2 . Juste un noob essayant d'aider d'autres noobs.

2

La cause principale du problème rencontré par le demandeur est que son fichier logging.properties n'est pas en cours de lecture.
Le fichier spécifié dans Java.util.logging.config.file n'est pas lu à partir du chemin de classe. Au lieu de cela, il est lu à partir du système de fichiers par rapport au répertoire actuel.
Par exemple, l'exécution de la commande suivante Java -Djava.util.logging.config.file=smclient-logging.properties SMMain lira le smclient-logging.properties à partir du répertoire en cours. Une fois que le fichier Java.util.logging.config.file correct est lu, les journaux sont générés comme spécifié dans le fichier.

2
Amit Singh

L'emplacement du fichier journal peut être contrôlé via le fichier logging.properties. Et il peut être passé comme paramètre JVM ex: Java -Djava.util.logging.config.file=/scratch/user/config/logging.properties

Détails: https://docs.Oracle.com/cd/E23549_01/doc.1111/e14568/handler.htm

Configuration du gestionnaire de fichiers

Pour envoyer les journaux dans un fichier, ajoutez FileHandler à la propriété handlers du fichier logging.properties. Cela permettra la journalisation des fichiers globalement.

handlers= Java.util.logging.FileHandler

Configurez le gestionnaire en définissant les propriétés suivantes:

Java.util.logging.FileHandler.pattern=<home directory>/logs/oaam.log
Java.util.logging.FileHandler.limit=50000
Java.util.logging.FileHandler.count=1
Java.util.logging.FileHandler.formatter=Java.util.logging.SimpleFormatter

Java.util.logging.FileHandler.pattern spécifie l'emplacement et le modèle du fichier de sortie. Le paramètre par défaut est votre répertoire personnel.

Java.util.logging.FileHandler.limit spécifie, en octets, le montant maximal que le consignateur écrit dans un fichier.

Java.util.logging.FileHandler.count spécifie le nombre de fichiers de sortie à parcourir.

Java.util.logging.FileHandler.formatter spécifie la classe de formateur Java.util.logging que la classe de gestionnaire de fichiers utilise pour formater les messages du journal. SimpleFormatter écrit de brefs résumés des enregistrements de journal "lisibles par l'homme".

Pour indiquer à Java d'utiliser ce fichier de configuration au lieu de $ JDK_HOME/jre/lib/logging.properties:

Java -Djava.util.logging.config.file=/scratch/user/config/logging.properties
1
Awanish Kumar

Si c'est null, le chemin du fichier serait votre répertoire personnel Eclipse. Votre fichier logging.properties n’est pas récupéré par le système. Par conséquent, pointez le fichier de propriétés sur le chemin complet, comme indiqué ci-dessous. Votre fichier journal sera alors généré à la place de directement ou vous le préférez. -Djava.util.logging.config.file = D:\keplereclipse\keplerws\NFCInvoicingProject\WebContent\WEB-INF\logging.properties 

0
KHALEEL SHAIK

Il semble que l'emplacement par défaut a changé. Pour trouver votre fichier journal, ouvrez la console Java avec votre application. dans là appuyez sur "s". Ceci affiche les propriétés système et de déploiement où vous pouvez trouver quelque chose comme:

deployment.user.logdir = C:\Users\username\AppData\LocalLow\Sun\Java\Deployment\log

Vous y trouverez vos fichiers de log.

0
Markus Bucher
  1. Mettez au point votre variable ou votre logger.getHandlers(): uniquement pour les instances de FileHandler et recherchez son champ privé: fichiers
  2. Assurez-vous que votre niveau de journalisation, y compris votre journal.
  3. Assurez-vous que votre niveau de gestionnaire, y compris votre journal.
  4. Il sera envoyé à votre répertoire personnel. S'il n'y a pas ce répertoire dans votre système d'exploitation, tel que Windows 95/98/ME, le fichier doit être enregistré dans le chemin par défaut, tel que C:\Windows\.
  5. Reflète, le même que le conseil 1

    Field[] handlerFiles = handler.getClass().getDeclaredFields();
    AccessibleObject.setAccessible(handlerFiles, true);
    
    for (Field field : handlerFiles) {
        if (field.getName().equals("files")) {
            File[] files = (File[]) field.get(handler);
            System.out.println(Arrays.toString(files));
        }
    }
    
  6. Le gestionnaire de journaux sera initialisé lors du démarrage de la machine virtuelle Java et terminé avant la méthode principale. Vous pouvez également le réinitialiser dans la méthode principale avec System.setProperty("Java.util.logging.config.file", file), qui appellera LogManager.readConfiguration().

0
lzhlyle