log4perl - Perl - Programmation
Marsh Posté le 11-05-2007 à 09:58:34
ne pas utiliser die comme un bourrin me paraitrait une bonne piste à explorer...
Marsh Posté le 11-05-2007 à 10:21:33
oui c'est claire
mais comment je peux avoir le code retour d'une connexion ou d'une deconnexion pour pouvoir par la suite le mettre dans une varibale et faire un test
Marsh Posté le 11-05-2007 à 11:35:51
mais tu l'as déjà dans dbh
je cite la doc:
Citation : connect If the connect fails (see below), it returns undef and sets both $DBI::err and $DBI::errstr. (It does not explicitly set $!.) You should generally test the return status of connect and print $DBI::errstr if it has failed. |
Marsh Posté le 11-05-2007 à 12:36:28
j'ai capté en faite quand je fait mon connect, je ne fais pas de "or die..." apres
mais je teste si la variable $DBI::err est defini donc j'ai un code
et j'affiche la nature du message avec cela $DBI::errstr;
un truc dans ce genre
Code :
|
donc du coup je peux utiliser log4perl et afficher le bon message d'erreur avec la nature du message dans mon fichier de log;
et je peux proceder ainsi pour l'execution des requete et la deconnexion.
Marsh Posté le 11-05-2007 à 12:57:27
je viens de me rendre compte que pour les requete, ca va poser un probleme, parceque si jamais la requete est mal saisi ( un champ mal orthogrphié) ca va planter car le prepare ne passera pas;
donc en gros pour les requete je teste apres le prepare et j'aurai dans mon shell deux fois l'erreur oracle à l'affichage, celle de dbd et celle de dbd que j'aurai mise dans mon log
Marsh Posté le 11-05-2007 à 13:08:55
j'oubli le message precedent
en faite il faut juste que je teste l'execute de la requete et encore;
si le prepare plante, c'est que la personne à mal saisi le script sql de la requete et comme il va etre en dure et ne changera pas j'ai aucunement besoin de faire le test dessus
Marsh Posté le 22-05-2007 à 10:18:03
Disons que pour sécuriser tout ce que tu fais avec ta base de données, il te faut régulièrement tester si la variable $DBI::err contient bien quelque chose et ce, aussi bien au moment où tu te connectes à la BDD que lorsque tu fais des requètes (quel qu'en soit la nature : interroger la base, créer un enregistrement, etc).
Et si tu ne veux pas que ton programme fasse du die( ) à tire-larigaud, utilise warn( ) à la place (ça fait pareil que die en affichant un message sur STDERR mais sans sortir du programme) et arrange-toi pour gérer comment ensuite ton programme doit se comporter.
Marsh Posté le 11-05-2007 à 08:51:13
salut,
Dans mon script, j'utilise log4perl pour logger tous ce que je fais :
mais le truc c'est que si je fait une connexion à une base ou j'ouvre un fichier, j'utilise cela (or die) :
si jamais la connexion plante alors le script s'arrete mais je n'aurai pas cause de l'arret du script dans mon fichier de log;
Comment pourrai je faire cela ?
Merci.