Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1572 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  Stdou redirigé vers un fichier mais quand meme affiché sur la console?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Stdou redirigé vers un fichier mais quand meme affiché sur la console?

n°1628929
ParadoX
Posté le 22-10-2007 à 21:26:21  profilanswer
 

Bonjour,
 
J'ai un script perl qui cree des fichiers de log en redirigant le Stdout vers un fichier. L'ennui, c'est que quand la fonction logguer est activee, je ne vois plus les commandes sur la console. Y-aurait-il un moyen pour faire les 2 en meme temps ?
 
Merci :jap:


Message édité par ParadoX le 22-10-2007 à 21:29:34

---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
mood
Publicité
Posté le 22-10-2007 à 21:26:21  profilanswer
 

n°1628933
Elmoricq
Modérateur
Posté le 22-10-2007 à 21:30:26  profilanswer
 

Euh, pourquoi ne pas changer le code pour assigner les sorties logs à un flux de données spécifiques, sans toucher à stdout ? :??:

n°1628937
ParadoX
Posté le 22-10-2007 à 21:35:57  profilanswer
 

Elmoricq a écrit :

Euh, pourquoi ne pas changer le code pour assigner les sorties logs à un flux de données spécifiques, sans toucher à stdout ? :??:


 
Hmm genre comment ? ^^
Pour le moment, stdout et stderr sont redirigés, je ne connaissais pas d'autres moyens pour rediriger des flux vers un fichier


---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
n°1628943
Elmoricq
Modérateur
Posté le 22-10-2007 à 21:44:20  profilanswer
 

La redirection se fait à l'intérieur du script, ou bien à l'appel avec un bête "blabla.pl > fichier_de_logs" ?

n°1628953
ParadoX
Posté le 22-10-2007 à 21:54:30  profilanswer
 
n°1628957
Elmoricq
Modérateur
Posté le 22-10-2007 à 21:59:29  profilanswer
 

Ben annule la redirection, et assigne un nom de flux différent de STDOUT à la place à l'ouverture du fichier de logs.
Par contre il te faut ensuite rechercher toutes les sorties du programme pour les forcer à se produire sur le flux. Comme ça au final tu obtiendras le même comportement qu'au départ, sauf que la sortie standard restera intacte.

n°1628964
ParadoX
Posté le 22-10-2007 à 22:08:55  profilanswer
 

Je ne comprends pas ton "assigne un nom de flux différent de STDOUT " [:transparency]


---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
n°1628967
Elmoricq
Modérateur
Posté le 22-10-2007 à 22:11:32  profilanswer
 

Tu dois avoir un truc du genre "open BLABLA, ">fichier de logs", suivi de "STDOUT->fdopen(\*BLABLA, "w" )".
 
Désactive le "STDOUT->...", puis modifie tous les "print ..." pour "print BLABLA ...".
 
That should do it. [:dawa]

n°1628970
ParadoX
Posté le 22-10-2007 à 22:15:14  profilanswer
 

Ok jessaye merci [:god]  :hello:


---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
n°1646809
couak
Posté le 21-11-2007 à 21:33:10  profilanswer
 

ou tu crée un tuyau supplémentaire via tee
 

Code :
  1. ./script.pl | tee -a fichier.log


Message édité par couak le 21-11-2007 à 21:33:21
mood
Publicité
Posté le 21-11-2007 à 21:33:10  profilanswer
 

n°1646814
Elmoricq
Modérateur
Posté le 21-11-2007 à 21:37:27  profilanswer
 

Son problème était inverse : le script redirigeait stdout et donc... il n'avait plus du tout de stdout.
 
tee permet de rediriger stdout tout en conservant le flux.

n°1647152
matafan
Posté le 22-11-2007 à 13:17:55  profilanswer
 

Ben moi je comprend le problème comme couak. Il me semble que ce que ParadoX veut c'est un équivalent de tee.

n°1647180
Elmoricq
Modérateur
Posté le 22-11-2007 à 13:44:55  profilanswer
 

Je peux effectivement me tromper, mais je campe sur mes positions. [:dawao]
 
Parce que c'est le sujet de ma seconde réponse, et que ParadoX indique que la redirection se fait à l'intérieur du script. [:dawa]

n°1647459
matafan
Posté le 22-11-2007 à 17:18:34  profilanswer
 

Oui, je pense qu'à l'intérieur du script il fait un truc du genre :

close STDOUT;
open STDOUT, ">outfile";


ce qui a pour effet d'envoyer dans un fichier tout ce qui devait s'afficher sur stdout. Et lui il voudrait que tout ce qui devrait s'afficher sur stdout s'affiche à la fois sur stdout et dans le fichier (ce qui est impossible sans faire deux sorties).

n°1647628
dreameddea​th
Posté le 22-11-2007 à 20:36:33  profilanswer
 

Sinon, pour afficher dans les deux sorties (écran et fichier) sans réécrire tous les prints,  en mode unix, il est possible de rediriger le stdout vers tee
 

Code :
  1. open(STDOUT,"| tee $stdout_log_filename" ) or return(ERR_CODE_FATAL,"Error while teeing STDOUT to $stdout_log_filename" );


 
Il n'y a pas pour moi de besoin de clore le STDOUT avant...
 
Bon courage...

n°1647638
Elmoricq
Modérateur
Posté le 22-11-2007 à 20:54:00  profilanswer
 

Je ne connaissais pas cette solution, ça a l'air chouette ça. [:chapi-chapo]

n°1647654
dreameddea​th
Posté le 22-11-2007 à 21:14:07  profilanswer
 

Perso je ne l'ai pas essayé pour STDOUT mais pour STDERR car j'utilise des modules pour lesquels je voulais garder une trace écrite des messages envoyés sur STDERR pour pouvoir faire des analyses à posteriori en cas de pb...
 
Et ne pas faire attention or return(ERR_CODE_FATAL, "..." ) c'est ma gestion perso des codes retours ... faire un die à la place


Message édité par dreameddeath le 22-11-2007 à 21:15:33
n°1647705
matafan
Posté le 23-11-2007 à 00:01:22  profilanswer
 

Ouais joli ! En fait j'avais essayé le coup du open avec un pipe vers tie mais avec le close avant ça marchait pas (tee: write error: Bad file descriptor). Sans fermer STDOUT ça marche bien.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  Stdou redirigé vers un fichier mais quand meme affiché sur la console?

 

Sujets relatifs
[C] fermeture soudaine de la consoleCréer un texte dont chaque mot pointe vers une note.
Erreur: undefined reference to `seek' (Modification fichier bmp)[php] Besoin d'aide fonctions vers classes
EasyPHP 2.0 beta 1 mon code php s'affiche dans ma pagerequete affiche un bouton AouB dans un array qui verifi a chaque ligne
[PHP] Importer un fichier XML dans base MYSQLInclude un fichier php dans un different site sur le meme serveur
fichier *.HTA, autodétection de la lettre du lecteur cdNom de fichier au téléchargement
Plus de sujets relatifs à : Stdou redirigé vers un fichier mais quand meme affiché sur la console?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR