log4perl ???

log4perl ??? - Perl - Programmation

Marsh Posté le 29-05-2009 à 08:04:44    

Bonjour,
 
Avec log4perl, il est possible d'avoir une log de nos traitement,dans un fichier de log.
Mais est-ce possible avec log4perl, de logger directement dans une base de donnée ?
 
 
Merci.

Reply

Marsh Posté le 29-05-2009 à 08:04:44   

Reply

Marsh Posté le 29-05-2009 à 09:32:59    

je viens de trouver,
c 'est avec cela :
Log::Log4perl::Appender::DBI --> Effectue la journalisation vers une base de données ;  
 
mais  
est -ce possible de faire une journalisation vers une base en plus de ma journalisation vers un file ???

Reply

Marsh Posté le 29-05-2009 à 09:47:20    

apparamment c'est possible, il faut definir plusieurs appenders,
mais le truc que je n'arrive pas à trouver,
c'est ou et comment je lui indique la table dans laquelle il doit écrire ?
est-ce qu'il y a une structure defini de table ??
 

Reply

Marsh Posté le 29-05-2009 à 10:19:52    

j'ai trouvé ceci,mais mais je comprend pas trop comment il font pour définir leur base ici name="datasource" value="DBI:CSV:f_dir=t/tmp"/ :
 

Code :
  1. <log4perl:appender name="DBAppndr2" class="Log::Log4perl::Appender::DBI">
  2.           <param name="warp_message" value="0"/>
  3.           <param name="datasource" value="DBI:CSV:f_dir=t/tmp"/>
  4.           <param name="bufferSize" value="2"/>
  5.           <param name="password" value="sub { $ENV{PWD} }"/>
  6.            <param name="username" value="bobjones"/>
  7.          
  8.           <param-text name="sql">insert into log4perltest (loglevel, message, shortcaller, thingid, category, pkg, runtime1, runtime2) values (?,?,?,?,?,?,?,?)</param-text>
  9.            <param-nested name="params">
  10.                 <param name="1" value="%p"/>
  11.                 <param name="3" value="%5.5l"/>
  12.                 <param name="5" value="%c"/>
  13.                 <param name="6" value="%C"/>
  14.            </param-nested>
  15.                
  16.            <layout class="Log::Log4perl::Layout::NoopLayout"/>
  17.        
  18. </log4perl:appender>

Reply

Marsh Posté le 29-05-2009 à 14:37:24    

Citation :

DBI:CSV:f_dir=t/tmp


Tu dis que tu vas te connecter avec le driver DBI (Database Interaction Module) en mode CSV (Comma Separated Values) sur le répertoire t/tmp
les fichiers au format csv  de ce repertoire vont être traités comme la base de données.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 29-05-2009 à 14:58:47    

en faite
c est pas vraiment a une base de donnée qu'on se connecte  
on utilise DBI pour faire du CSV
moi je pensai qu'on pouvait directement acceder a une base avec log4perl

Reply

Marsh Posté le 29-05-2009 à 16:35:49    

Mais tu peux tout a fait, il te suffit d'utiliser un autre driver DBI que le driver CSV.
C'est pas ce qui manque: http://search.cpan.org/search?quer [...] ode=module
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 16-06-2009 à 09:57:07    

j'arrive pas à visualiser ou trouver une synthaxe qui se connecte à une base oracle
 
<param name="datasource" value="DBI:DBD::ORACLE .??

Reply

Marsh Posté le 16-06-2009 à 14:49:06    

http://oreilly.com/catalog/perldbi/chapter/ch04.html
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 16-06-2009 à 16:31:10    

merci si pour ton lien
se connecter a une base en dbi je sais faire,
ce que je ne sais pas, c'est la synthaxe avec log4perl

Reply

Marsh Posté le 16-06-2009 à 16:31:10   

Reply

Marsh Posté le 17-06-2009 à 00:00:37    

Certes, mais la page en question fournissait ce script, qui aurait du te permettre de trouver la syntaxe correcte pour ta datasource, puisque c'est ce qui semble être ton problème.
 

Code :
  1. #!/usr/bin/perl -w
  2. #
  3. # ch04/listdsns: Enumerates all data sources and all installed drivers
  4. #
  5. use DBI;
  6.  
  7. ### Probe DBI for the installed drivers
  8. my @drivers = DBI->available_drivers();
  9.  
  10. die "No drivers found!\n" unless @drivers; # should never happen
  11.  
  12. ### Iterate through the drivers and list the data sources for each one
  13. foreach my $driver ( @drivers ) {
  14.    print "Driver: $driver\n";
  15.    my @dataSources = DBI->data_sources( $driver );
  16.    foreach my $dataSource ( @dataSources ) {
  17.        print "\tData Source is $dataSource\n";
  18.    }
  19.    print "\n";
  20. }
  21.  


 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 25-01-2010 à 09:59:18    

de retour,enfin libre
par contre je n'ai toujours pas avançer sur ce chantier.
est-ce que quelqu un pourrait m'aider
a configurer le fichier log4perl pour que je puisse logger certains message dans une base de donnée

Reply

Marsh Posté le 25-01-2010 à 12:48:09    

Ben avec le script que je t'ai donné, tu arrives a trouver la bonne datasource?
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 25-01-2010 à 13:48:38    

je sais pas si tu vois comment est le fichier log4perl.xml
mais je vois pas comment integrer le code que tu ma donnée dedans.
 
faire une connexion a une base, inserer , recuperer je sais faire.
mais si dans chaque script je dois faire une connexion a la base pour inserrer des donnée dedans, le log4perl me sert a rien.
 
pour logger mes message je fais un $prod_loger...
et je met le message de $err_log->fatal et sa me le met dans un fichier de log defini dans le log4perl.
moi ce que je souhaiterai savoir , c'est existent il une solution fourni pas log4perl pour logger dans une base et non un fichier

Reply

Marsh Posté le 25-01-2010 à 16:15:15    

donny3 a écrit :

je sais pas si tu vois comment est le fichier log4perl.xml
mais je vois pas comment integrer le code que tu ma donnée dedans.
 
faire une connexion a une base, inserer , recuperer je sais faire.
mais si dans chaque script je dois faire une connexion a la base pour inserrer des donnée dedans, le log4perl me sert a rien.


Ben quelque part, il faut au moins que tu fasse  
Log::Log4perl->init("log4perl.conf" );
pour démarrer Log4perl
Ensuite, dans tes scripts, il faut que tu fasses  
my $food_logger = get_logger("xxxx" );
pour créer un logger
et tu traces ce dont tu as besoin
si ton log4perl.conf est bien fait, avec un appender de type DB (ou DBI, je sais plus) bien paramétré, tu devrais logger dans la BDD sans avoir a faire une connexion pour chaque script.

Citation :

je sais pas si tu vois comment est le fichier log4perl.xml

 
Bon évidement, tout ça est en perl pur, a toi de transposer dans ce que tu fais (du CGI?) parce que la, c'est plus du perl, mais un trux xml-ifié.
A+,


Message édité par gilou le 25-01-2010 à 16:16:29

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 25-01-2010 à 16:49:01    

c'est du perl pure
sauf que mon fichier log4perl est un log4perl.xml
 
c est bien cela je dois rajouter un appender de type base de donnée
comme sa je loggerai dans la base et dans le fichier log.

Reply

Marsh Posté le 25-01-2010 à 19:58:19    

Citation :

sauf que mon fichier log4perl est un log4perl.xml

C'est le fichier de configuration.
C'est ce que je ne pige pas: si tu fais du perl pur, pourquoi avoir un tel fichier en xml; il y a une raison précise?
Parce que passer par un log4perl.conf ecrit comme un fichier texte semblerait plus simple (et est bien mieux documenté)
Et tu l'appeles bien a travers un Log::Log4perl->init("log4perl.xml" );?
La doc du fichier xml devrait être explicitée dans la documentation du module Log::Log4perl::Config::DOMConfigurator, mais ce n'est pas un truc dont je me sois servi.
A+,
 
 


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 28-04-2010 à 14:57:43    

je viens de trouver cette doc
 
http://log4perl.sourceforge.net/re [...] rator.html
 
j'ai essayé ce qu'il proposait,
<param name="datasource" value="DBI:CSV:f_dir=t/tmp"/>
par contre je ne pije pas trop à quelle base il se connecte et donc quand je le lance,
rien ne se passe,
 
du coup j'ai modifier le datasource comme ceci , afin de pouvoir lui preciser la base que je souhaite utiliser  
 
<param name="datasource" value="DBI:Oracle:RPBASE_TEST"/>
 
et il ne se passe toujours rien,
 
je ne comprend pas

Reply

Marsh Posté le 28-04-2010 à 20:45:54    

On se demande vraiment pourquoi je t'ai posté un script perl qui énumère les data sources telles que connues par ton système.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 29-04-2010 à 08:20:52    

Gilou merci pour ton script
mais il ne s'applique pas à mon cas
j'utilise log4perl.xml  

Reply

Marsh Posté le 29-04-2010 à 12:04:45    

Ce qui ne change rien a l'histoire:
Il faut bien que tu vérifies si la manière dont tu nommes ta source est celle connue par le système, et le script est la pour cela.
D'autre part, comme je te l'avais indiqué (a se demander si tu lis mes réponses) log4perl.xml est un fichier de configuration. Mais tu n'as pas indiqué, alors que je te le demandais, de quelle manière tu mets en jeu log4perl afin qu'il utilise ce fichier de config.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed