oflog: bibliothèque de journalisation basée sur log4cplus
Ce module contient des classes utilisées à des fins de journalisation. Cette bibliothèque est basée sur log4cplus.
Les principales classes sont (par ordre alphabétique) :
- OFLog
- OFLogger
- dcmtk::log4cplus::ConsoleAppender
- dcmtk::log4cplus::FileAppender
- dcmtk::log4cplus::PatternLayout
Fichiers
Les fichiers suivants fournissent des exemples de configuration ainsi que de la documentation complémentaire :
Exemples
L'exemple suivant montre comment utiliser oflog dans une application console.
La journalisation proprement dite
Nous avons d'abord besoin des en-têtes et des définitions nécessaires :
// Naturally, we need the header for oflog
#include "dcmtk/oflog/oflog.h"
// Then we create our logger object. The argument is the name of the logger
// which can be used to configure it from the config file
OFLogger my_log = OFLog::getLogger("dcmtk.apps.sample");
C'est tout ce qui est nécessaire pour créer des instructions de journalisation. Vous pouvez maintenant utiliser l'une des macros suivantes pour générer des entrées de journal :
OFLOG_FATAL(my_log, "This is a sample message of log level 'fatal'");
OFLOG_ERROR(my_log, "There are six log levels and each provides a OFLOG_level() macro");
OFLOG_WARN(my_log, "These macros are quite flexible");
OFLOG_INFO(my_log, "To output numbers like " << 5 << " you can use any iostream operations");
OFLOG_DEBUG(my_log, "Since iostreams are quite flexible themselves, a lot of stuff is possible");
OFLOG_TRACE(my_log, "hex numbers? 0x" << STD_NAMESPACE hex << 0x1234 << " and decimal numbers "
<< STD_NAMESPACE dec << 0x1234 << " are no problem at all");
Configuration de la journalisation
Bien que le code ci-dessus fonctionne tel quel, le résultat n'est ni élégant ni flexible. Pour configurer oflog à l'aide de OFCommandLine, vous pouvez procéder comme suit :
// This is just an example
cmd.addGroup("general options:", LONGCOL, SHORTCOL);
// You own options here, e.g. --version
cmd.addOption("--version", "print version information and exit", OFCommandLine::AF_Exclusive);
// This call adds all of oflog's options, e.g. --debug and --quiet
OFLog::addOptions(cmd);
Après avoir appelé OFConsoleApplication::parseCommandLine(), oflog peut être configuré en un seul appel :
OFLog::configureFromCommandLine(cmd, app);
C'est tout ce qui est nécessaire pour configurer le logger et disposer d'options comme –verbose et –log-config.
Vous pouvez également utiliser OFLog::configure(), mais cette approche n'offre pas la flexibilité de –log-level et –log-config.
Le motif par défaut des messages de journalisation est "%P: %m%n", c'est-à-dire le premier caractère du niveau de journalisation (par exemple "D" pour debug ou "E" pour error), un deux-points, le message et un saut de ligne.