#include "../Log/include/Log.h"
void test(Log &l)
{
l << "dans test";//function test line 5
}
int main()
{
Log log("test.txt");
log << "dans le main";// function main line 12
test(log);
return 0;
}
le fichier de sorti
Log.cpp operator << 23 dans le main
Log.cpp operator << 23 dans test
ce que j'aimerai avoir
main.cpp main 12 dans le main
main.cpp test 5 dans test
- Edité par JEANBAPTISTECOMTE1 10 janvier 2022 à 22:23:28
Bin, ça marche comme tu l'as expliqué, ça donne l'endroit où l'appel à "std::source_location::current()" est effectué.
L'erreur, c'est d'avoir factoriser cette partie dans l'opérateur << et pas l'avoir appeler avant.
Pour les framework de Log que j'ai l'habitude d'utiliser, ça passe par des MACRO qui appellent l'équivalent de "std::source_location::current()" avant l'appel à la routine de Log proprement dite. Généralement, lors de l'évaluation de ses paramètres.
Si vous voulez garder cette factorisation tardive, il ne vous faut pas la "source_location" lors de l'appel avoir accès à la "frame" de pile appelante. C'est souvent possible avec des framework de log capable de logger les piles d'appels.
Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
La subtilité de std::source_location est de demander au compilateur de le faire à travers std::source_location::current() comme paramètre par défaut d'une fonction. Les valeurs de position seront celles de l'appelant. Par contre, avec <<, il faudra passer par un intermédiaire.
Quitte à utiliser des Singleton, autant la boire jusqu'à la lie et utiliser un Singleton Config pour récupérer les informations de configurations dont le chemin vers les Logs. (Je vous laisse vous démerder pour avoir le Singleton Config "up" avant le Singleton Log.)
Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
Un Singleton qui contient la configuration du programme, qui est généralement dans un fichier de configuration ou donnée en paramètre de la ligne de commande, etc...
Tu ne pense pas à avoir le chemin en dur et à recompiler quand il change, quand même ?
Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
>J'ai modifié mes classes justement pour ne pas avoir de chemin en dur
Et ?
Pourquoi la "solution" que vous avez trouvé pour les Log ne fonctionnerait pas pour la gestion des fichiers de configuration ?
J'essaye de vous faire toucher du doigt toutes les limitations et emmerdements que votre solution implique. (mais les constructeurs publics de vos Singleton, c'est de votre faute, pas de la leur)
Pourquoi ne pas utiliser une librairie de logs déjà implémentée, qui a déjà résolue ou passée outre ces problèmes ?
Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
Log et source_location
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Ton présent détermine ton futur et la connaissance te placera au dessus de ta génération .