Skip to content

Utilisation du "LoggerFactory"

Wesley Levasseur edited this page May 7, 2021 · 4 revisions

Définition

LoggerFactory consiste à gérer tous les ILogger puis de gérer la sauvegarder.

Cette classe est un LoggerFactory de défaut si l'utilisateur ne souhaite pas en crée lui-même en implémentant ILoggerFactory.

Utilisation

Rappel

/**
 * Ce constructeur permet de créer un LoggerFactory.
 *
 * @param dir Le dossier où les fichiers d'enregistrement des messages seront enregistrés.
 */
public LoggerFactory(@NotNull final File dir) throws InternalError {
    if (!dir.exists())
        if (!dir.mkdir())
            throw new InternalError("The Logger folder couldn't be created.\nThis could be due to a lack of permission or inaccurate path.");
    this.logsDir = dir;
}

Où ?

Principalement vous n'allez avoir qu'un LoggerFactory la plupart du temps. Il est donc logique de l'initialiser dans votre classe principale. Comme ci-dessous.

public class MainClass {

    private final LoggerFactory loggerFactory;

    public LoggerFactory getLoggerFactory() {
        return this.loggerFactory;
    }

    public MainClass() {
        this.loggerFactory = new LoggerFactory(new File("path/to/logsDir"));
    }
}

Un seul ? Pas plusieurs ?

Comme dis ci-dessus, dans les cas principaux il vous sera pas nécessaire d'utiliser plusieurs LoggerFactory. Vous pourriez totalement en créer plusieurs dans un cas où vous souhaitez faire du "dispatching" de dossier selon vos désirs, RemasteredLogger n'est qu'ici pour faciliter la tâche et laisse libre a votre imagination.

Les Loggers ?

final ILogger logger1 = this.loggerFactory.getLogger("Logger1");
final Logger logger1_ = (Logger) logger1;
final Logger mainClassLogger = (Logger) this.loggerFactory.getLogger(this.getClass());
final ILogger mainClassLogger_ = mainClassLogger;
final Logger _mainClassLogger = (Logger) this.loggerFactory.getLogger(MainClass.class);
final ILogger _mainClassLogger_ = _mainClassLogger;

Voici un exemple de procéder ci-dessus.

Vous devez savoir que pour récupérer un Logger où en créer un s'effectue depuis un ILoggerFactory pour attacher directement le Logger au ILoggerFactory ainsi permettant la gestion des "logs".

Mais vous pouvez aussi créer un Logger mais vous constaterez qu'il demandera obligatoirement un ILoggerFactory en paramètre.

/**
 * Ce constructeur permet de créer un Logger. Il est généralement créer depuis le Factory lui-même.
 *
 * @param name          Le nom du Logger.
 * @param loggerFactory Le Factory du Logger.
 */
public Logger(String name, ILoggerFactory loggerFactory) {
    this.name = name;
    this.loggerFactory = loggerFactory;
}

La sauvegarde

Pour la plupart des utilisateurs vous utiliserez juste save() mais il existe pour les personnes qui souhaite personnaliser certaines choses, plusieurs autres méthodes que vous pourriez utiliser de la manière suivante.

try {
    this.loggerFactory.save();
} catch (IOException e) {
    e.printStackTrace();
}
List<String> othersLogs = new ArrayList<>();
try {
    this.loggerFactory.save(othersLogs);
} catch (IOException e) {
    e.printStackTrace();
}
List<String> othersLogs2 = new ArrayList<>();
List<String> othersLogs3 = new ArrayList<>();
List<String> othersLogs4 = new ArrayList<>();
try {
    this.loggerFactory.save((List<String>[]) Arrays.asList(othersLogs2, othersLogs3, othersLogs4).toArray());
} catch (IOException e) {
    e.printStackTrace();
}