English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriel de base Java

Contrôle du flux Java

Tableau Java

Java orienté objet (I)

Java orienté objet (II)

Java orienté objet (III)

Gestion des exceptions Java

Liste Java (List)

Java Queue (file d'attente)

Ensemble Map Java

Ensemble Set Java

Entrée et sortie Java (I/O)

Liseur Java/Writer

Autres sujets Java

Journalisation (Logging) Java

Dans ce tutoriel, nous allons apprendre le journalisation Java et ses divers composants à travers des exemples.

Java nous permet de créer et de capturer des messages et des fichiers de journal à travers le processus de journalisation.

En Java, l'enregistrement des journaux nécessite des cadres et des API. Java dispose d'un cadre d'enregistrement intégré dans le paquet java.util.logging.

Nous pouvons également utiliser des frameworks tiers (comme Log4j, Logback, etc.) sont utilisés pour la journalisation.

Composants de journalisation Java

La figure suivante montre les composants principaux de l'API de journalisation Java (java.util.logging) et le flux spécifique.

Diagramme de flux de journalisation Java

1.Logger

La classe Logger fournit des méthodes de journalisation. Nous pouvons instancier un objet de la classe Logger et appeler ses méthodes pour enregistrer.

Laissons-nous donner un exemple.

Logger logger = Logger.getLogger("newLoggerName");

Logger.getLogger() de la classe Logger est utilisé pour trouver ou créer un nouveau Logger. Le paramètre en chaîne de caractères définit le nom du logger.

Ici, cela créera un nouveau Logger ou renverra un Logger avec le même nom.

Selon la convention, utilisez class.getName() pour définir un Logger après la classe actuelle.

Logger logger = Logger.getLogger(MyClass.class.getName());

Remarque :Si le nom passé est null, cette méthode lance une NullPointerException.

Chaque Logger a un niveau qui détermine l'importance des messages de journalisation. Il y a7de niveaux de journalisation de base :

Niveaux de journalisation (en ordre décroissant)Use
SEVEREDégâts graves
WARNING

Messages d'alerte, problèmes potentiels

INFOInformations d'exécution standard
CONFIGInformations de configuration
FINE

Informations de développeur standard (messages de trace)

FINER

Informations détaillées pour les développeurs (messages de trace)

FINEST

Informations détaillées pour les développeurs (messages de trace)

OFF

Fermer l'enregistrement de tous les niveaux de journalisation (ne capturer aucun contenu)

ALL

Ouvrir l'enregistrement de tous les niveaux de journalisation (capturer tout le contenu)

Chaque niveau de journalisation a une valeur entière qui détermine leur gravité, à l'exception des deux niveaux de journalisation spéciaux OFF et ALL.

Message de journalisation

Par défaut, les trois premiers niveaux de journalisation sont toujours enregistrés. Pour configurer d'autres niveaux, nous pouvons utiliser le code suivant :

logger.setLevel(Level.LogLevel);
// Exemple
logger.setLevel(Level.FINE);

Dans cet exemple, seules les niveaux de log Level.FINE et ceux au-dessus sont configurés pour l'enregistrement des journaux. Supprimez tous les autres messages de journalisation.

Il faut enregistrer un message de journalisation maintenant, nous utilisons la méthode log().

logger.log(Level.LogLevel, "log message");
// Exemple
logger.log(Level.INFO, "C'est un message de niveau INFO de journal");

Il existe des méthodes abrégées pour enregistrer les niveaux nécessaires.

logger.info("C'est un message de niveau INFO de journal");
logger.warning("C'est un message de niveau WARNING de journal");

Ensuite, toutes les demandes de journal approuvées par le niveau de journal défini seront redirigées versLogRecord.

Remarque :Si le niveau d'un enregistreur de journal est réglé sur null, alors son niveau est hérité de son parent, et ainsi de suite.

2Filtre (Filter)

le filtre (s'il existe) décide si LogRecord doit rediriger l'enregistrement de journal. Comme son nom l'indique, il filtre les messages de journal en fonction de critères spécifiques.

SiLogRecordSelon les conditions spécifiées, seules les entrées du journal passent du journalier au gestionnaire de journal, puis au système externe.

// Définir filter
logger.setFilter(filter);
// Obtenir filter
Filter filter = logger.getFilter();

3Gestionnaire (source de sortie)

Les gestionnaires de journal ou les applications supplémentaires recevrontLogRecordet l'exporter vers diverses destinations.

Java SE fournit5gestionnaires intégrés :

gestionnairesUse
StreamHandler

écrire dans OutputStream

ConsoleHandlerécrire dans la console
FileHandlerécrire dans un fichier
SocketHandler

écrire sur un port TCP distant

MemoryHandlerécrire en mémoire

Les gestionnaires peuventLogRecordTransmis au filtre pour déterminer à nouveau s'il peut être redirigé vers un système externe.

Pour ajouter un nouveau gestionnaire, nous utilisons le code suivant :

logger.addHandler(handler);
// Exemple
Handler handler = new ConsoleHandler();
logger.addHandler(handler);

Pour supprimer le gestionnaire, nous utilisons le code suivant :

logger.removeHandler(handler);
// Exemple
Handler handler = new ConsoleHandler();
logger.addHandler(handler);
logger.removeHandler(handler);

Un enregistreur peut avoir plusieurs gestionnaires. Pour obtenir tous les gestionnaires, nous utilisons le code suivant :

Handler[] handlers = logger.getHandlers();

4Programme de formatage (Formatter)

Les gestionnaires peuvent également utiliserFormattermettreLogRecordobjetformatagepour les chaînes, puis l'exporter vers des systèmes externes.

Java SE dispose de deux fonctions intégréesFormatter:

FormatterUse
SimpleFormatter

Format LogRecord into string

XMLFormatter

Format LogRecord into XML format

We can use the following code to format the handler:

// Formatted into string form
handler.setFormatter(new SimpleFormatter());
// Formatted into XML format
handler.setFormatter(new XMLFormatter());

Log manager

Log managementGlobal records of information for object tracking. It reads and maintains log record configurations and logger instances.

The log manager is a singleton, which means only one instance is instantiated.

To get the instance of the log manager, we use the following code:

LogManager manager = new LogManager();

Advantages of logs

Here are some advantages of using Java logs.

  • Help monitor the flow of the program

  • Help capture any errors that may occur

  • Provide support for problem diagnosis and debugging