7
votes

Comment puis-je rediriger la sortie de la fonction matrice dans un fichier de Perl?

Je veux rediriger les messages die dans un fichier distinct afin que je puisse comparer ce fichier plus tard pour déterminer ce qui s'est mal passé.

Mais ce code me donne des erreurs: < Pré> xxx

Je ne veux pas faire un 2> de l'appelant. Est-ce qu'il y a quelque part pour les rediriger de l'intérieur du script?


0 commentaires

3 Réponses :


15
votes

Vous pouvez installer un $ SIG {__ die __} gestionnaire à exécuter juste avant que la "matrice" fonctionne. Le gestionnaire sera appelé avec le message d'erreur que vous pouvez vous connecter: xxx

voir $ sig {expr} à Perlvar pour plus de détails.


0 commentaires

10
votes

Perl's's Die CODE> Imprime sur STDERR code> Pour que vous puissiez rediriger starr code> dans un fichier.

#!/usr/bin/env perl
# the path above depends on your system

open(STDERR, ">>", "errlog.log");
die "Hello";


1 commentaires

Cela redirige également les messages, les avertissements et tout ce qui est imprimé à StDerr. Non seulement cela, si quelqu'un l'a fait correctement en redéfinissant le gestionnaire matrice , il pourrait même pas rediriger les messages Die ().



10
votes

the journal :: log4perl code> module offre plus que quelques options.

On peut choisir de sortir le message d'erreur sur STDRER et le fichier journal. P>

my $logger = Log::Log4perl->init ( 'log.conf' );
# Configuration file controls what to output, like time, line number, class...

$logger->get_logger ( 'Hello::World' );  # Define which class logger to use

.
.
.

open my $fh, '<', $file
  or $logger->logdie ( "Log the demise: $!" );  # ... and die;


0 commentaires