2010-06-11 5 views
34

Cela pourrait être une question stupide, mais je suis un peu perdu avec java LoggerOù java.util.logging.Logger stocker leur journal

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

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

Sur chaque journalisation des appels de l'enregistreur effectue d'abord un contrôle pas cher du niveau de demande (par exemple GRAVES ou FINE) par rapport au niveau de journal efficace de l'enregistreur. Si le niveau de demande est inférieur au niveau de consignation, l'appel de consignation est immédiatement renvoyé.
Après avoir réussi ce test initial (bon marché), le Logger va allouer un LogRecord pour décrire le message de journalisation. Il appellera alors un filtre (s'il est présent) pour vérifier plus en détail si l'enregistrement doit être publié. Si cela passe, il publiera ensuite le LogRecord à sa sortie Handlers.`

Est-ce que cela signifie 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 grave, je peux voir tous les trois journaux, et si mon log level est AVERTISSEMENT, alors je ne peux pas voir le journal SEVERE, est-ce correct? Et comment puis-je définir le log level?

+2

L'enregistreur intégré n'est pas génial. Remplacez-le par log4j (http://logging.apache.org/log4j/1.2/). Il y a de bons documents sur le site log4j expliquant comment l'utiliser ... – bwawok

+0

@bwawok: Ce n'est pas une mauvaise idée d'écrire contre Apache Commons Logging. Il utilisera log4j s'il est disponible ou reviendra à la journalisation intégrée si log4j n'est pas disponible. – Powerlord

+2

Je n'utiliserais pas la journalisation des communs. A beaucoup de problèmes avec, et pue lors de l'utilisation de tomcat. Si vous codez vous-même du code dans log4j. Si vous codez une bibliothèque, codez avec slf4j (http://www.slf4j.org) – bwawok

Répondre

27

Où puis-je voir le journal?

Dans un fichier journal ou une sortie standard, en fonction de la configuration actuelle 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 que cela veut dire que si je 3 demande de connexion de niveau ...

SEVERE est le plus important (la plus haute priorité) et FINE est le moins important type de message du 3 indiqué dans votre exemple . Donc, si votre niveau de journal est SEVERE, seuls les messages SEVERE sont consigné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 pouvez ne consigner que les erreurs et éventuellement les avertissements (qui sont - espérons-le - assez rares, mais que vous voulez savoir à leur sujet), ainsi vous pouvez définir le niveau de WARNING. Cependant, dans votre environnement de développement, lorsque, 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 ainsi le niveau de consignation sur FINE ou FINEST.

Voici une bonne introduction to 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 avec un ConsoleHandler:

Ceci est juste 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.

+0

ohhh c'est l'inverse. Merci beaucoup. Peter, pouvez-vous me montrer comment configurer le journal pour imprimer dans un fichier ou une console? –

+0

@Harry, voir ma mise à jour. –

+0

Vous mentionnez que dans la vraie application, il est préférable de configurer la journalisation via le fichier de propriétés. Serait assez gentil pour me montrer comment le faire? –

5

Le Java TM Logging Overview est tout à fait intéressant de répondre à toutes vos questions sur le Java Logger:

logging overview

Vous verrez votre journal où associé à votre Logger les Handler (s) va générer ledit Log (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.

Log Level:

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

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

1

Où cela dépend de votre configuration. Il y a des détails à ce sujet dans les documents de l'API. Le niveau de notation 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 alors seulement ceux-là apparaîtront.

En général, vous devez utiliser FINE pendant le débogage et passer à SEVERE lorsqu'il se trouve dans un environnement de production.

Questions connexes