Formule en java

Fermé
nima ninette - 28 juin 2016 à 14:59
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 - 29 juin 2016 à 21:36
Bonjour, svp j'ai une formule au niveau d'un programme que j'ai pas compris, pouvez vous me la détailler
catch (SQLException ex) {
Logger.getLogger(BDD.class.getName()).log(Level.SEVERE, null, ex);
}
Merci.
A voir également:

1 réponse

Pierre1310 Messages postés 8564 Date d'inscription lundi 21 décembre 2015 Statut Membre Dernière intervention 21 juillet 2020 649
28 juin 2016 à 15:01
Salut,

catch (SQLException ex) { 
Logger.getLogger(BDD.class.getName()).log(Level.SEVERE, null, ex); 
} 


Le catch s'active en cas d'erreur de code dans le try

D'après ce que je vois, le nom de la classe de l'instance BDD est extrait avec un log de niveau severe.
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
28 juin 2016 à 20:26
"D'après ce que je vois, le nom de la classe de l'instance BDD est extrait avec un log de niveau severe."
Y a l'idée mais c'est pas tout à fait ça.

Logger.getLogger(BDD.class.getName())
récupère (ou créé si c'est la première fois) le logger identifié par le nom de la classe (dans une Map<String, Logger> ), cela permet donc de regrouper toutes les logs liées à cette classe (plutôt que se limiter à System.out et System.err)

log(Level.SEVERE, null, ex)
écrit dans le logger sélectionné une log de niveau SEVERE avec un message null (ce que je déconseille) et en écrivant la stack trace de l'exception 'ex'

Au final c'est assez proche d'un ex.printStackTrace() mais avec un logger (méthode à privilégier même si ceux par défaut de Java ne sont pas terribles)
0
nima ninette
29 juin 2016 à 10:18
Merci bcp, svp que signifie "un log de niveau severe"
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
29 juin 2016 à 20:38
Une log c'est une ligne d'information, tu peux logger ce que tu veux.
Généralement une log commence par l'heure à laquelle le message a été écrit, le niveau de la log (debug, info, error...) suivi éventuellement d'informations supplémentaires sur l'exécution comme le nom du thread, le nom de la classe et/ou de la méthode (voire le numéro de ligne de code), etc. sans oublier bien sûr le message en lui même.

Il est également possible de logger des exceptions en cas d'erreur mais c'est au choix du développeur de dire si une exception est grave ou non. Dans ton cas on considère que c'est une erreur sévère, c'est l'un des plus hauts niveaux d'erreur, si tu as une erreur sévère dans tes logs cela indique que certaines fonctionnalités sont indisponibles (la base de données dans ton exemple)

Remarque : les noms des niveaux de logs varient d'une librairie à une autre, c'est juste une indication pour classer tes messages.
Il peut par exemple être utile de rajouter des messages de debug, qui indiqueront pas à pas des messages sur le déroulement du programme. Sachant que l'on peut configurer le niveau de log minimum à afficher donc on peut switcher sur un mode plus ou moins verbeux selon les besoins.
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
29 juin 2016 à 21:36
Le mieux pour apprendre c'est encore d'expérimenter. Exemple :

package ccm;

import java.util.logging.*;

public class Test {

    private static final Logger LOG = Logger.getLogger("MyLogger");

    public static void main(String[] args) {
        // info
        LOG.log(Level.INFO, "My info 1");
        LOG.info("My info 2");

        // warn
        LOG.warning("My warning 1");
        LOG.log(Level.WARNING, "My warning 2");

        // severe
        try {
            throw new Exception("My exception");
        } catch (Exception e) {
            LOG.severe("My severe");
            LOG.log(Level.SEVERE, "My severe", e);
        }
    }
}

Résultat :

juin 29, 2016 9:30:00 PM ccm.Test main
INFOS: My info 1
juin 29, 2016 9:30:00 PM ccm.Test main
INFOS: My info 2
juin 29, 2016 9:30:00 PM ccm.Test main
AVERTISSEMENT: My warning 1
juin 29, 2016 9:30:00 PM ccm.Test main
AVERTISSEMENT: My warning 2
juin 29, 2016 9:30:00 PM ccm.Test main
GRAVE: My severe
juin 29, 2016 9:30:00 PM ccm.Test main
GRAVE: My severe
java.lang.Exception: My exception
	at ccm.Test.main(Test.java:20)

Le résultat par défaut est moche mais c'est configurable, même si les loggers par défaut de Java ne sont pas les plus faciles à utiliser.
0