EasyLogger est un poids ultra-léger (ROM <1,6k, RAM <0,3K), la bibliothèque de journaux C / C ++ haute performance, qui est idéale pour les projets logiciels sensibles aux ressources, tels que: produits IoT, appareils portables, maisons intelligentes, et plus encore. Par rapport aux bibliothèques de journaux C / C ++ bien connues telles que Log4C et Zlog, EasyLogger a des fonctions plus simples et fournit moins d'interfaces aux utilisateurs, mais il sera rapide à démarrer.
1.1 Caractéristiques principales
Prend en charge les méthodes de sortie définies par l'utilisateur (par exemple: terminal, fichier, base de données, port série, 485, flash ...);
Le contenu du journal peut inclure des niveaux, des horodatages, des informations sur le thread, des informations de processus, etc.;
La sortie du journal est conçue comme une méthode à filetage et prend en charge la sortie asynchrone et les modes de sortie tamponnés ;
Prend en charge plusieurs systèmes d'exploitation (RT-thread, UCOS, Linux, Windows, Nuttx ...) et prend également en charge les plates-formes en métal nu;
Les journaux prennent en charge le format brut et prennent en charge HexDump ;
Prise en charge du filtrage dynamique par des balises , des niveaux et des mots clés ;
Les journaux à tous les niveaux prennent en charge différentes couleurs à afficher;
Fortement extensible, prend en charge l'expansion de nouvelles fonctions sous forme de plug-ins.
Explication des noms:
1. Format brut: journal original non formaté.
2. Tags: Dans le logiciel, vous pouvez définir des balises pour les journaux qui doivent être imprimés en fonction des fichiers, des modules, des fonctions, etc. pour réaliser la classification des journaux.
1.2 Plug-in
1. Flash: utilisez l'interface Flash Operation fournie par la bibliothèque EasyFlash et stockez directement les journaux dans Flash sans avoir besoin d'un système de fichiers.
2. Fichier: prend en charge le transfert de fichier, l'enregistrement de la boucle de fichier et d'autres fonctions liées à la sortie du journal des fichiers.
3. Restez à l'écoute ...
1.3 Star & Fork
Je fournirai plus de plugins plus tard. Nous sommes également très invités à concevoir et à développer des plug-ins et des fonctions plus pratiques pour améliorer EasyLogger (GitHub | Oschina | codage) . Si vous pensez que ce projet open source est super, vous pouvez cliquer sur Star dans le coin supérieur droit de la page d'accueil du projet et le recommander à plus d'amis dans le besoin.
2. Utiliser
2.1 Configuration des paramètres
EasyLogger possède des propriétés telles que la méthode de filtrage, le format de sortie et le commutateur de sortie.
La méthode de filtrage prend en charge le filtrage en fonction des étiquettes, des niveaux et des mots clés;
La sortie du journal peut être allumée / désactivée dynamiquement;
Les niveaux de sortie dynamiques et statiques peuvent être définis
Statique: commutateur de premier niveau, défini par les macros, utilisé à l'étape de compilation;
Dynamique: le commutateur secondaire est utilisé pendant l'étape de fonctionnement via l'interface API.
Remarque: Actuellement, la configuration des paramètres et les méthodes de sortie sont le mode Singleton, c'est-à-dire qu'une seule méthode de configuration est prise en charge à l'échelle mondiale. Dans ce mode, le logiciel sera plus simple, mais il ne peut pas prendre en charge les méthodes de sortie complexes.
2.2 Niveau de sortie
Reportez-vous à Android LogCAT, le niveau le plus élevé est 0 (affirmation) et le niveau le plus bas est de 5 (verbeux).
L'effet couleur par défaut des journaux à chaque niveau est le suivant. Les utilisateurs peuvent également définir les styles de couleurs et de polices de journaux sur elog_cfg.h en fonction de leurs préférences.
2.3 Filtrage de sortie
Prise en charge du filtrage par niveau, étiquette et mot-clé . Lorsqu'il y a beaucoup de contenu de journal, la fonction de filtrage peut être utilisée pour localiser le journal plus rapidement pour assurer la lisibilité du journal. Pour plus de paramètres et de détails de fonction de filtre, veuillez lire le document docszhapikernel.md
Remarque: les journaux de format RAW et le format hexdump ne prennent pas en charge les balises et le filtrage des mots clés.
2.4 Format de sortie
Le format de sortie prend en charge: niveau, temps, étiquette, informations de processus, informations sur le thread, chemin de fichier, numéro de ligne, nom de méthode. Chaque niveau de priorité peut définir le format de sortie indépendamment.
2.5 Méthode de sortie
Grâce à un portage utilisateur, toute méthode de sortie peut être prise en charge. Cependant, pour les nouvelles fonctions qui peuvent être introduites dans une certaine méthode de sortie, il doit être implémenté via des plug-ins, tels que le transfert de fichiers, la récupération des journaux flash, etc. Plus de plug-ins seront open source plus tard. Ce qui suit est une brève comparaison de certains des scénarios d'utilisation des sorties:
Terminal: pratique pour les utilisateurs de visualiser dynamiquement et n'a pas de fonctions de stockage;
Fichiers et flash: les deux ont des fonctions de stockage, et les utilisateurs peuvent afficher les journaux historiques. Cependant, la méthode de fichier nécessite la prise en charge du système de fichiers et la méthode Flash est plus adaptée aux petits périphériques intégrés sans systèmes de fichiers.
2.6 Demo
2.6.1 fonctions de base
La figure suivante montre les commandes d'entrée dans le terminal pour contrôler les paramètres de sortie du journal et de filtre, qui démontre plus intuitivement les fonctions centrales de EasyLogger.
Chemin de démonstration: demoosrt-threadstm32f10x
Documentation de l'API: docszhapikernel.md
Documentation de la migration: docszhportkernel.md
2.6.2 Flash Log (Enregistrez le journal sur Flash)
Le processus suivant consiste à sortir des journaux via la console et à stocker les journaux de sortie en flash. Redémarrez et lisez le dernier journal enregistré, et enfin effacez enfin le journal flash.
Chemin de démonstration: demoosrt-threadstm32f10x
Documentation de l'API: docszhapiflash.md
Documentation de la migration: docszhportflash.md
2.6.2 Journal des fichiers (Enregistrez le journal dans un fichier)
Le plug-in de fichier vous permet de enregistrer automatiquement les journaux dans les fichiers. Chaque fichier peut être dimensionné.
3. Documentation
Pour un contenu spécifique, reportez-vous au fichier sous docszh . Assurez-vous de l'utiliser après avoir lu le document .
4. Plus tard
Stockage flash: ajoutez des fonctions de stockage et de lecture de journaux à EasyFlash, permettant à EasyLogger de se connecter de manière transparente avec elle. Rendre les journaux plus faciles à stocker dans des systèmes non-fichiers et avoir la fonction de la récupération des journaux historiques;
Fichier de configuration: fichier de configuration sous le système de fichiers;
Transfert de fichiers: le transfert de fichiers est pris en charge par la capacité et le temps du système de fichiers;
Assistant de journal: développez un assistant logarithmique multiplateforme, compatible avec les systèmes Linux, Windows et Mac. Front-end: html5 + bootstrap + angularjs + nw.js, back-end: rouille + fer + rouille-websocket + serial-rs;
Sortie asynchrone: Actuellement, la sortie du journal et le code utilisateur sont synchronisés. Bien que cette méthode soit simple, il n'y a pas de problème d'écrasement du journal. Cependant, sur les plates-formes à faible vitesse de sortie, la vitesse de fonctionnement du logiciel sera réduite en raison de l'ajout de fonctions de journalisation. Par conséquent, la sortie asynchrone sera ajoutée plus tard, et le filtrage des mots clés peut également être placé dans une sortie asynchrone;
Arduino: a ajouté Arduino Lib et a fourni sa démo;