Schrift
[thread]6123[/thread]

Log-Datei: Fehlermeldungen in Log-Datei schreiben

Leser: 9


<< |< 1 2 >| >> 17 Einträge, 2 Seiten
mobas
 2004-03-08 09:03
#80641 #80641
User since
2004-02-11
19 Artikel
BenutzerIn
[default_avatar]
moin :)

Wenn man in Perl ne anweisung macht kann man sich die, falls vorhanden, die fehlermeldungen auf dem bildschirm ausgeben lassen.
Code: (dl )
... or die ("blablabla");


nun will ich aber das er nicht die meldungen auf dem bildschirm ausgibt sondern in ne logdatei schreibt.
das ganze soll ungefähr dann so aussehen das auf dem bildschirm ne meldung kommt wie: "Es trat ein Fehler auf! Siehe Log-Datei!"
und in die Logdatei soll dann die fehlermeldung vom system oder meine eigene mit datum geschrieben werden.
ich weis das es in perl das modul Logfille::Base gibt aber ich kann mit der beschreibung nich viel anfangen :(

hat jemand n codebeispiel für mich?!
wäre echt supi!
danke schon mal vorab!!!!

mfg
mobas
renee
 2004-03-08 09:20
#80642 #80642
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ich würde eher Tie::LogFile nehmen...

Entsprechend der Synopsis:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
use Tie::LogFile;
my $logfile = '/var/log/foo';

tie(*LOG, 'Tie::LogFile', $logfile,
format => '%c (%p) [%d] %m',
tformat => '%X %x') or die $!;

open(DATEI,"<$datei") or print LOG $!; # hier bei Fehler in die LOG-Datei schreiben...
#...
close DATEI or print LOG $!;

close(LOG) or die "Couldn't close $logfile\n";
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/
mobas
 2004-03-08 09:41
#80643 #80643
User since
2004-02-11
19 Artikel
BenutzerIn
[default_avatar]
hi renee,

danke für die schnelle antwort!!!

werd das gleich mal probieren. :)

bis dann!

mfg mobas
havi
 2004-03-08 10:18
#80644 #80644
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
... oder eine andere (ohne Modul) Variante.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/perl

use warnings;
use strict;

my $string = "Test";
open(LGD, ">Logdatei.txt") or die $!;
if ($string eq "Test") {
  print LGD "OK\n";
} # if
else {
  print LGD "KO\n";
} # else
close(LGD) or die $!;


Gruss\n\n

<!--EDIT|havi|1078734073-->
havi
 2004-03-08 10:24
#80645 #80645
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
... oder diese Variante (schreibt auf Konsole und in Datei)
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/perl

use warnings;
use strict;

sub hprint; # h fuer havi... :-)

my $string = "Test";
open(LGD, ">Logdatei.txt") or die $!;
if ($string eq "Test") {
hprint "OK\n";
} # if
else {
hprint "KO\n";
} # else
close(LGD) or die $!;

sub hprint {
print @_;
print LGD @_;
} # sub hprint


Gruss
renee
 2004-03-08 11:03
#80646 #80646
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ich finde das Modul eigentlich sehr praktisch, weil dann auch gleich die Zeit mit gespeichert wird. Wenn man die Ausgabe auf der Konsole auch braucht, dann kann man es ja so machen:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use Tie::LogFile;
 my $logfile = '/var/log/foo';
 
 tie(*LOG, 'Tie::LogFile', $logfile,
       format  => '%c (%p) [%d] %m',
       tformat => '%X %x')           or die $!;
       
 open(DATEI,"<$datei") or log_p($!); # hier bei Fehler in die LOG-Datei schreiben...
 #...
 close DATEI or log_p($!);
 
 close(LOG) or die "Couldn't close $logfile\n";

sub log_p{
 print "Es ist folgender Fehler aufgetreten: $!\n";
 print LOG $!;
}
\n\n

<!--EDIT|renee|1078736650-->
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/
pq
 2004-03-08 14:21
#80647 #80647
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=mobas,08.03.2004, 08:03]
nun will ich aber das er nicht die meldungen auf dem bildschirm ausgibt sondern in ne logdatei schreibt.
das ganze soll ungefähr dann so aussehen das auf dem bildschirm ne meldung kommt wie: "Es trat ein Fehler auf! Siehe Log-Datei!"
und in die Logdatei soll dann die fehlermeldung vom system oder meine eigene mit datum geschrieben werden.
[/quote]
kommt natürlich drauf an, was du genau willst. wenn du wie bisher 'or die'
verwenden willst, kannst du folgendes machen:
Code: (dl )
1
2
3
4
5
6
7
8
9
BEGIN{
 open LOG, ">>logdatei" or die $!;
 $SIG{_ _DIE_ _} = sub {
   print LOG "[".(scalar localtime)."] fehler: @_\n";
print "Es trat ein Fehler auf! Siehe Log-Datei!\n";
   exit 1;
 };
 open STDERR, ">&LOG";
}

die leerzeichen zwischen den _ bei _ _DIE_ _ musst du löschen
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
mobas
 2004-03-08 15:05
#80648 #80648
User since
2004-02-11
19 Artikel
BenutzerIn
[default_avatar]
[quote=renee,08.03.2004, 10:03]Ich finde das Modul eigentlich sehr praktisch, weil dann auch gleich die Zeit mit gespeichert wird. Wenn man die Ausgabe auf der Konsole auch braucht, dann kann man es ja so machen:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use Tie::LogFile;
my $logfile = '/var/log/foo';

tie(*LOG, 'Tie::LogFile', $logfile,
format => '%c (%p) [%d] %m',
tformat => '%X %x') or die $!;

open(DATEI,"<$datei") or log_p($!); # hier bei Fehler in die LOG-Datei schreiben...
#...
close DATEI or log_p($!);

close(LOG) or die "Couldn't close $logfile\n";

sub log_p{
print "Es ist folgender Fehler aufgetreten: $!\n";
print LOG $!;
}
[/quote]
hi@all,

genau diese lösung nehme ich! :)
ist genau das was ich suche.
nur ein prob hab ich noch.
das %C soll ja die anzahl der logeinträge zählen die in der logdatei sind oder?!
bei mir steht in jeder zeile immer ne 1. ???
hat eine nen plan warum dat so ist?

danke aber an alle für die vielen anregungen!!!

mfg
mobas
mobas
 2004-03-08 15:32
#80649 #80649
User since
2004-02-11
19 Artikel
BenutzerIn
[default_avatar]
hi,

hat sich erledigt.
jetzt macht er das mit dem countern :)

aber da ist noch n prob.
wenn ein fehler auftritt schreibt er mir zwar mein text in die log und
gibt mir meine wahlmessage auf dem bildschirm aus aber auch noch zusätzlich was von perl direkt.
Quote
Use of uninitialized value in join or string at /usr/lib/perl5/site_perl/5.8.1/LogFile.pm line 95.

wat soll das denn heissen?
und wie krieg ich diese meldungen auch unterdrückt?

mfg
mobas
pq
 2004-03-08 16:03
#80650 #80650
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
anstatt in der ersten zeile -w solltest du 'use warnings' nehmen. ist aber
trotzdem nicht schön, dass das modul warnungen ausgibt...
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< |< 1 2 >| >> 17 Einträge, 2 Seiten



View all threads created 2004-03-08 09:03.