web-dev-qa-db-fra.com

Où Java.util.logging.Logger stocke-t-il son journal

Cela peut être une question stupide mais je suis un peu perdu avec Java Logger

private static Logger logger = Logger.getLogger("order.web.OrderManager");
logger.info("Removed order " + id + ".");

Où puis-je voir le journal? Aussi cette citation de la bibliothèque Java.util.logging.Logger:

Lors de chaque appel de journalisation, l'enregistreur effectue initialement une vérification bon marché du niveau de demande (par exemple, SÉVÈRE ou FIN) par rapport au niveau de journalisation effectif de l'enregistreur. Si le niveau de demande est inférieur au niveau de journal, l'appel de journalisation revient immédiatement.
Après avoir réussi ce test initial (bon marché), l'enregistreur alloue un enregistrement de journal pour décrire le message de journalisation. Il appellera ensuite un filtre (s'il est présent) pour vérifier plus en détail si l'enregistrement doit être publié. Si cela réussit, il publiera alors le LogRecord dans ses gestionnaires de sortie. "

Est-ce à dire que si j'ai 3 request level Journal:

logger.log(Level.FINE, "Something");
logger.log(Level.WARNING, "Something");
logger.log(Level.SEVERE, "Something");

Et mon log level est SÉVÈRE, je peux voir les trois journaux et si mon log level est AVERTISSEMENT, alors je ne vois pas le journal SÉVÈRE, est-ce correct? Et comment définir le log level?

38
Thang Pham

Où puis-je voir le journal?

Dans un fichier journal ou une sortie standard, en fonction de la configuration réelle de votre gestionnaire de journaux. Cela peut être défini via un fichier de propriétés ou directement via l'API de journalisation.

Est-ce à dire que si j'ai 3 journaux de niveau de demande ...

SEVERE est le plus important (priorité la plus élevée) et FINE est le type de message le moins important des 3 indiqués dans votre exemple. Donc, si votre niveau de journal est SEVERE, seuls les messages SEVERE sont enregistrés. Si le niveau est FINE, les 3 messages sont enregistrés.

Ceci est très utile lorsque dans un environnement de production réel, vous souhaiterez peut-être enregistrer uniquement les erreurs et éventuellement les avertissements (qui sont - espérons-le - assez rares, mais vous souhaitez les connaître), vous pouvez donc définir le niveau de journal sur WARNING. Cependant, dans votre environnement de développement, par exemple en déboguant un problème, vous voulez voir toutes les informations dans les journaux, même si cela crée une grande quantité de données de journal et ralentit l'application. Vous définissez donc le niveau de journalisation sur FINE ou FINEST.

Voici une bonne introduction à Java Logging .

Mise à jour: un exemple simple de la page ci-dessus pour configurer l'enregistreur pour se connecter à un fichier au niveau FINEST:

Handler fh = new FileHandler("%t/wombat.log");
Logger.getLogger("").addHandler(fh);
Logger.getLogger("com.wombat").setLevel(Level.FINEST);

Pour vous connecter à la console, remplacez le FileHandler ci-dessus par un ConsoleHandler:

Handler ch = new ConsoleHandler();
Logger.getLogger("").addHandler(ch);

Ceci n'est qu'un exemple - dans une application réelle, il est préférable de configurer la journalisation via un fichier de propriétés de configuration.

28
Péter Török

Java TM Logging Overview est assez intéressant pour répondre à toutes vos questions sur le Java Logger:

logging overview

Vous verrez votre journal où le Handler (s) associé à votre Logger générera ledit journal (dans un Console, ou dans un Stream .. .).
La configuration par défaut établit un gestionnaire unique sur l'enregistreur racine pour envoyer la sortie à la console.

Niveau de journalisation :

Chaque message de journal a un niveau de journal associé. Le niveau donne un aperçu approximatif de l'importance et de l'urgence d'un message de journal. Les objets de niveau journal encapsulent une valeur entière, des valeurs plus élevées indiquant des priorités plus élevées.

La classe Level définit sept niveaux de journal standard, allant de FINEST (la priorité la plus basse, avec la valeur la plus faible) à SEVERE (( la priorité la plus élevée, avec la valeur la plus élevée ).

5
VonC

Son emplacement dépend de votre configuration. Il y a des détails à ce sujet dans la documentation de l'API. Le niveau de journalisation est exactement l'inverse de ce que vous avez dit. Si vous avez une configuration de FINE, tout ce qui est FINE, WARNING, SEVERE s'affichera, mais si vous l'avez défini sur SEVERE, seuls ceux-ci apparaîtront.

En général, vous devez utiliser FINE lors du débogage et basculer vers SEVERE lorsqu'il se trouve dans un environnement de production.

1
Andrew Hubbs