Schrift
[thread]5301[/thread]

eval-Fehler des MainLoops abfangen



<< >> 7 Einträge, 1 Seite
GoodFella
 2007-02-25 17:01
#46245 #46245
User since
2007-01-09
192 Artikel
BenutzerIn
[default_avatar]
Ich möchte, sollte eine meiner Widget-Funktionen einen Fehler produzieren, diesen in einer Log-datei mit TimeStamp festhalten.

Habe folgenden Code probiert:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
eval 
 {
  MainLoop();
 };

if($@)
 {
  my $f;
  open($f, ">>$error_log") or open($f, ">$error_log");
  my($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time);
  print $f (sprintf("%2d.%02d.%04d %02d:%02d:%02d   ", $mday, ($mon + 1), ($year + 1900), $hour, $min, $sec))."$@\n";
  close($f);
 }


Dann in Zeile 1050 folgenden Fehler absichtlich eingebaut:

Code (perl): (dl )
$top_msg->ass;


aus STDERR kam folgende Fehlermeldung:

Quote
Tk::Error: Failed to AUTOLOAD 'Tk::Toplevel::ass' at mmc.pl line 1050
Carp::croak at C:/Programme/Perl/lib/Carp.pm line 269
Tk::Widget::__ANON__ at C:/Programme/Perl/lib/Tk/Widget.pm line 347
main::add_file at mmc.pl line 1050
Tk callback for .button1
Tk::__ANON__ at C:/Programme/Perl/lib/Tk.pm line 252
Tk::Button::butUp at C:/Programme/Perl/lib/Tk/Button.pm line 111
<ButtonRelease-1>
(command bound to event)


..Nur leider wurde nichts in meine Datei geschrieben, ein print-test ergab, dass perl nichtmal in die if($@) { .. } - Schleife reingeht.

Ideen, wie ich das zum Laufen bringen könnte?
GoodFella
 2007-02-26 12:30
#46246 #46246
User since
2007-01-09
192 Artikel
BenutzerIn
[default_avatar]
Vielleicht isses das falsche Forum (weil mir keiner antwortet), ist wohl eher was für Perl Allgemein.
renee
 2007-02-26 13:38
#46247 #46247
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Da passiert kein die, sondern das ist eine Warnung...

Du müsstest also das hier machen:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# am Anfang des Programms:
$SIG{__WARN__} = \&warningToFile;

sub warningToFile{
my $f;
if(open($f, ">>",$error_log)){
my($sec, $min, $hour, $mday, $mon, $year) = localtime(time);
print $f (sprintf("%2d.%02d.%04d %02d:%02d:%02d ", $mday, ($mon + 1), ($year + 1900), $hour, $min, $sec))."@_\n";
close($f);
}
else{
warn "Could not open $error_log!";
}
}
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
bloonix
 2007-02-26 14:14
#46248 #46248
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=renee,26.02.2007, 12:38]
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# am Anfang des Programms:
$SIG{__WARN__} = \&warningToFile;

sub warningToFile{
 my $f;
 if(open($f, ">>",$error_log)){
     my($sec, $min, $hour, $mday, $mon, $year) = localtime(time);
     print $f (sprintf("%2d.%02d.%04d %02d:%02d:%02d   ", $mday, ($mon + 1), ($year + 1900), $hour, $min, $sec))."@_\n";
     close($f);
 }
 else{
   warn "Could not open $error_log!";
 }
}
[/quote]
Oder

Code: (dl )
1
2
3
4
5
6
7
8
9
use Log::Handler;

my $log = Log::Handler->new(
  filename => $error_log,
  mode => 'append'
);

$SIG{__WARN__} = sub { $log->warning(@_) };
$SIG{__DIE__}  = sub { $log->error(@_); exit(1) };


:p
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
GoodFella
 2007-02-26 16:41
#46249 #46249
User since
2007-01-09
192 Artikel
BenutzerIn
[default_avatar]
Cool danke euch beiden, ich habe renees Lösung benutzt, da ich Log::Handler nicht per ppm-gui installieren konnte; macht sich eine neue Faulheit breit seit der neuen ppm-Version ^^
bloonix
 2007-02-26 19:26
#46250 #46250
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
@GoodFella, ppm? Ist das irgendso ein Windows Foo? :)
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
GoodFella
 2007-02-26 20:30
#46251 #46251
User since
2007-01-09
192 Artikel
BenutzerIn
[default_avatar]
[quote=opi,26.02.2007, 18:26]@GoodFella, ppm? Ist das irgendso ein Windows Foo? :)[/quote]
Yep, Windows, bekenne mich schuldig ^^
<< >> 7 Einträge, 1 Seite



View all threads created 2007-02-25 17:01.