Bibliothèque de journalisation AC construite pour des performances élevées et un ensemble de fonctionnalités riches.
한국어 | 简体中文
Caractéristiques clés | Construire et installer | Utilisation de base | Contributif
Sousless a de nombreuses fonctionnalités qui rendent la journalisation en C rapidement et facile:
L'un des principaux objectifs de cette bibliothèque est de fournir une interface de journalisation cohérente à une grande variété de cibles de journal. Cela signifie que vous pouvez vous concentrer sur la définition d'événements et où vous voulez qu'ils aillent, sans trouver d'autres SDK ni ajouter des démons et des plugins pour les obtenir où vous voulez. L'ampleur peut écrire des journaux à:
Vous ne voyez pas ce dont vous avez besoin? Créez un problème avec votre demande et nous allons le travailler dans notre feuille de route!
L'ampleur nécessite uniquement CMake et une chaîne d'outils de construction soutenue par CMake (comme GCC ou Visual Studio) à construire.
# cloning the latest version of the source tree
git clone [email protected]:goatshriek/stumpless.git
# creating a new build directory
mkdir build
cd build
# configuring the new build
cmake ../stumpless
# building stumpless (with 4 threads - adjust as desired)
cmake --build . --parallel 4
# install the library (you probably need sudo to do this)
sudo cmake --install .Consultez les instructions d'installation pour plus de détails sur la construction et l'installation de l'ampleur dans différents environnements et / ou avec d'autres chaînes d'outils.
La façon la plus simple de commencer est d'utiliser la fonction stumplog comme remplacement direct de la fonction syslog de la bibliothèque standard:
// if you're used to doing this:
syslog ( LOG_INFO | LOG_USER , "My message #%d" , count );
// then you can start by changing to this:
stumplog ( LOG_INFO | LOG_USER , "My message #%d" , count ); Si vous n'avez pas ouvert de cible, cela enregistrera les messages à la cible par défaut pour la plate-forme: sur Linux c'est /dev/log , sur un système Mac, ce sera /var/run/syslog , et sur une machine Windows, c'est le journal des événements Windows. Si vous ouvrez une cible ou même quelques-unes avant d'appeler stumplog , les journaux seront envoyés à la cible la plus récemment ouverte.
Si vous souhaitez un appel de fonction encore plus court, vous pouvez utiliser la fonction stump pour envoyer un message à la cible actuelle. Vous pouvez également utiliser des spécificateurs de format comme vous le feriez avec printf :
stump ( "Login attempt failure #%d for user %s" , count , username ); Si vous n'avez pas besoin de spécificateurs de format, utilisez l'une des variantes _str : c'est à la fois plus rapide et plus sûr!
stump_str ( "Login failure! See structured data for info." ); Si vous souhaitez ouvrir une cible spécifique plutôt que d'utiliser la valeur par défaut, ouvrez simplement celle dont vous avez besoin et commencez à envoyer des messages. Par exemple, pour connecter un fichier nommé example.log :
target = stumpless_open_file_target ( "example.log" );
// uses the last opened target by default
stump ( "Login attempt failure #%d for user %s" , count , username );L'envoi de messages sur le réseau à quelque chose comme Splunk ou Rsyslog est tout aussi simple:
target = stumpless_open_udp4_target ( "send-to-splunk-example" ,
"mylogserver.com" ); // or use an IP
stump ( "Login attempt failure #%d for user %s" , count , username );Si vous avez plusieurs cibles, vous pouvez envoyer des messages à une cible choisie comme celle-ci:
stumpless_add_message ( target ,
"Login attempt failure #%d for user %s" ,
count ,
username );Il est courant de spécifier les niveaux de gravité directement dans les appels de journalisation, donc l'ampleur fournit des fonctions macro pour rendre cela moins verbeux et plus efficace. Par exemple, pour enregistrer les messages avec une gravité d'informations, vous pouvez le faire:
stump_i ( "this gets logged as an info message" ); Et si vous souhaitez également voir les informations sur le fichier source, le numéro de ligne et le nom de la fonction dans chaque message, vous pouvez utiliser _t (le 'T' est pour Trace):
stump_t ( "this includes source info" ); L'utilisation de ces fonctions a l'avantage supplémentaire qu'elles peuvent être supprimées au moment de la compilation en définissant simplement les symboles STUMPLESS_ENABLE_UPTO ou STUMPLESS_DISABLE_DOWNTO . Cela permet de modifier facilement les niveaux de journalisation entre les builds, par exemple pour avoir des versions prod et débogues sans différences dans leur code source.
// be sure to define this before stumpless.h gets included
#define STUMPLESS_ENABLE_UPTO_INFO
// ...
// this log will go through just fine
stump_i ( "I'm doing that thing you asked" );
// this debugging message is completely removed: no runtime impact whatsoever
stump_d ( "DEBUG info: %d, %d, %s" , thing_1 , thing_2 , stringy_thingy );Consultez les en-têtes en niveau / niveau pour voir la liste complète des fonctions de sténographie de gravité, ou l'exemple de niveau de gravité pour voir un programme complet en action.
Pour des exemples plus détaillés des scénarios ci-dessus, l'utilisation de types de cibles spécifiques, comment gérer les structures de messages plus compliquées et plus consulter les exemples. Ceux-ci incluent des exemples d'exemples de fichiers de code pour compiler, exécuter et modifier pour vous démarrer.
Remarquez un problème ou avez une demande de fonctionnalité? Créez simplement un problème en utilisant l'un des modèles, et nous répondrons aussi rapidement que possible. Vous pouvez également consulter les directives de contribution du projet pour plus de détails sur les différentes façons de redonner à la communauté open source!
Si vous souhaitez réellement écrire du code ou faire une mise à jour vous-même, jetez un œil au guide de développement pour obtenir une orientation détaillée. Il existe quelques options basées sur votre niveau d'expérience et votre familiarité avec les contributions.
La première option consiste à parcourir la liste des problèmes qui sont marqués avec le bon premier numéro d'étiquette. Ces problèmes sont sélectionnés pour être une petite mais significative de travail et incluent des détails sur l'approche générale que vous pouvez adopter pour les compléter. Ils sont un excellent point de départ si vous cherchez simplement à tester les eaux de ce projet ou une contribution open source en général.
Les développeurs plus expérimentés peuvent préférer examiner la liste complète des problèmes sur le projet, ainsi que la feuille de route. Si un article attire votre intérêt, laissez un commentaire dans le problème existant ou ouvrez un nouveau s'il n'existe pas encore et énoncez votre intention de travailler dessus afin que d'autres aient un moyen de savoir qu'il est en cours.
Si vous êtes curieux de savoir comment quelque chose dans l'ampleur fonctionne qui n'est pas expliqué ici, vous pouvez vérifier la section appropriée de la documentation, stockée dans le dossier DOCS. Les dossiers du référentiel contiennent leurs propres fichiers de lecture qui détaillent ce qu'ils contiennent et toute autre information pertinente. La documentation de chaque fonction est également hébergée sur le site Web du projet, à la fois pour la bibliothèque C ainsi que dans les autres liaisons linguistiques comme C ++.
L'ampleur comprend également la documentation dans les installations locales sous forme de pages man . Une fois que vous avez installé la bibliothèque, vous pouvez vérifier la documentation pour n'importe quel fichier d'en-tête (et les fonctions qu'il contient) en exécutant Man avec le nom de l'en-tête avec des répertoires remplacés par des soulignements, par exemple man stumpless_log.h pour voir la documentation des fonctions qui enregistrent les messages de chaîne simples.
Il existe également de nombreuses façons de contacter l'équipe de projet et la communauté plus large pour un soutien.