perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 31
Click for quality!




08.02.2012 / 22:56

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


Beitragwatchdog- Script für logfile
Seitenanfang
Hi Leutz,
ich möchte ein Logfile periodisch nach Pattern durchsuchen und bei Vorhandensein dieses Pattern ein Systemaufruf starten (Durchstarten Webserver). Da theoretisch der zu suchende String mehrmals vorkommen kann, möchte ich jeweils das letzte Vorkommen berücksichtigen.
Meine Idee war nun die Zeilenanzahl in ein File zu schreiben (LAST_ROW) und beim nächsten Start ab dieser Zeile das Logfile einzulesen (weblogic.log). Geht das?? - ich hab dazu keine Funktion gefunden.

open(ERROR,'...\weblogic.log');
@lines=<ERROR>;
foreach $title (@lines) {
print "$title\n";
}
close(ERROR);
open(OUTPUT1,'>...\watchdog\LAST_ROW');
print OUTPUT1 "$#lines\n";
close(OUTPUT1);
... lies beim nächsten Lauf ab Zeile LAST_ROW die Datei weblogic.log ein.

Eine Variante mit tail gefällt mir nicht so richtig, da hier nur eine gewisse Anzahl an Zeilen berücksichtigt wird und das Script ständig im Hintergrund laufen müsste- Oder sehe ich das falsch?


use strict;
local $| = 1; #Autoflush true
my $file = '....weblogic.log';
die "tail nicht installiert\n" unless qx/which tail/;
open(TAIL,"tail -f $file |") or die $!;
while(my $line = <TAIL>){
print "$.: $line\n";
print "Gefunden\n" if $line =~ m/PATTERN/;
}
close TAIL; # schließe die Pipe

Datum: 11.02.2005-11:30

Beitragre: watchdog- Script für logfile
Seitenanfang
speicher nicht die Zeile in der Du warst, sondern die Byte-Position, denn dann kannst Du mit seek (siehe perldoc -f seek) arbeiten...

Datum: 11.02.2005-13:36

Beitragre: watchdog- Script für logfile
Seitenanfang
Hi renee,
danke erstmal für die Antwort. Mit seek habe ich wg. diesem Problem schon experimentiert. Nun habe ich aber das Problem den Rest der Datei ab der gespeicherten Byte- Position einzulesen. Muss ich hier read verwenden??
Sorry, ich komme da an dieser Stelle nicht weiter, da Perlneuling.

Datum: 11.02.2005-15:46

Beitragre: watchdog- Script für logfile
Seitenanfang

#!/usr/bin/perl

use warnings;
use strict;

# ... DATA schon zum lesen geoeffnent

# aktuelle Offset = 0

# lese die ersten 5 Zeilen und gib sie aus
print scalar <DATA> for 1..5;

# speichere aktuellen Offset
my $last_position = tell(DATA);
close(DATA);

print "-- MARK --\n";

open(DATA, '<', $0) or die $!;
seek(DATA, $last_position, 0) or die "can't seek\n";
print for <DATA>;
close(DATA);

__DATA__
Zeile1
Zeile2
Zeile3
Zeile4
Zeile5
Zeile6
Zeile7
Zeile8

Grusz Christian.

Datum: 16.02.2005-22:53

Beitragre: watchdog- Script für logfile
Seitenanfang
Hi Christian,
danke für Dein Update .. genau das war es was ich gesucht habe! danke,danke,danke

Datum: 23.02.2005-10:01

-






-
-