Salve a tutti!
Ho scritto questa libreria:
Però non riesco a farla funzionare.codice:package LogFile; use IO::Handle; use IO::File; require Tie::Handle; @ISA = qw(Exporter Tie::Handle); use strict; my $LogHand; sub Open { untie *STDERR; #close *STDERR; #open ($LogHand, ">$_[0]") or return undef; #if ($LogHand->fdopen(fileno(STDOUT),"w")) { $LogHand = new IO::File(">".$_[0]) or return undef; untie *STDERR; tie *STDERR, __PACKAGE__; return 1; } sub Save { 1; } sub TIEHANDLE { my ($package, $file)=@_; #return undef unless defined $file; #$LogHand = new IO::File(">".$file) or return undef; #print "ciao FILE @_\n"; open (STDERR, ">$file") or return undef; return 1; } sub PRINT { print "ciao mondo!! @_\n"; # <stdin>; print $LogHand localtime(),@_,"<--\n"; $LogHand->autoflush(1); } sub PRINTF { print "sprinter FF\n"; } sub WRITE { print "che palle\n"; } sub DESTROY { close $LogHand; }
In pratica cosa dovrebbe fare:
Dovrebbe redirigere tutto quello che viene mandato all'STDERR (tutti gli errori) su un file fisico sull'HD.
Sì, tutto viene salvato divinamente, però....
io vorrei, ad ogni riga di errore, inserirvi anche la data e l'ora, cioè, vorrei formattare in modo adeguato il file di LOG.
Non ci riesco.
Forse mi è venuta in mente una idea ora .....
hihihihi....
E se inserisco l'STDERR in una variabile scalare e ogni tanto controllo che essa non contenga qualche valore.
Se c'è qualcosa, prendo le righe, inserisco la data corrente e salvo il tutto.
E' brutto?

Rispondi quotando