Thread Laufzeiten anhand von Logfileeinträge ermitteln (11 answers)
Opened by wiederlader at 2007-11-29 14:50

wiederlader
 2007-11-29 14:50
#103270 #103270
User since
2007-01-03
36 Artikel
BenutzerIn
[default_avatar]
Hallo Zusammen,
nachdem ich schon längere Zeit nichts mehr mit Perl gemacht habe steht eine neue Herausforderung an. Leider tue ich mich damit ziemlich schwer.
Ich habe ein Logfile "logfile.txt" (wird täglich neu geschrieben) dass wie folgt aufgebaut ist (in der ersten Zeile steht immer nur das Datum):

17.11.2007
17.11.2007 06:02:42 START Clients = 2
17.11.2007 06:02:42 Login=T718052 ActionId=1-VIDCK8 GF=Bereitstellung
17.11.2007 06:02:42 lese TSAM Felder
17.11.2007 06:02:43 Datei erzeugt: 1VIDCK8.xml
17.11.2007 06:02:43 SID anfragen
17.11.2007 06:02:44 SID fertig = 00000011952757638269
17.11.2007 06:02:44 lese TSAM Felder fertig
17.11.2007 06:02:44 STOPP
17.11.2007 06:04:19 START Clients = 2
17.11.2007 06:04:19 Login=T718756 ActionId=1-VIDCL4 GF=Bereitstellung
17.11.2007 06:04:19 lese TSAM Felder
17.11.2007 06:04:21 Datei erzeugt: 1VIDCL4.xml
17.11.2007 06:04:21 SID anfragen
17.11.2007 06:04:25 SID fertig = 00000119527586128810
17.11.2007 06:04:25 lese TSAM Felder fertig
17.11.2007 06:04:25 STOPP

Im Logfile werden pro Bearbeitung 8 Zeilen (von START bis STOPP) geschrieben. Ich möchte jetzt für jede Bearbeitung die Laufzeit zwischen dem Step "SID anfragen" und "SID fertig" ermitteln und wie folgt ausgeben:

Login=T718052 ActionId=1-VIDCK8 GF=Bereitstellung > 1 Sekunde(n)
Login=T718756 ActionId=1-VIDCL4 GF=Bereitstellung > 4 Sekunde(n)

Mir fehlt einfach die Idee wie ich die Auswertung umsetzten kann.
Ich bin schon mal wie folgt angefangen, habe mich aber festgefahren.

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!perl -w
use strict;
use warnings;

my $KWS_Logfile = "D:/logfile.txt";
open KWS_LOGFILE, "<$KWS_Logfile";
my @kws_logfile =  <KWS_LOGFILE>;
close KWS_LOGFILE;

my $logfile_date = shift(@kws_logfile);  # erste Zeile entfernen und in Scalar übergeben
chomp @kws_logfile;                      # Alle Newline-Zeichen entfernen

my $Spalten_Logfile = "D:/logfile_spalten.txt";
open SPALTEN_LOGFILE, ">$Spalten_Logfile";

foreach (@kws_logfile) {
         my $spalten = join ";", @kws_logfile[0..7];
         print SPALTEN_LOGFILE "$spalten\n";
         foreach (0..7) {
                  shift(@kws_logfile)
         }
}

Kann mir vielleicht jemand einen Tipp geben wie ich weiter vorgehen könnte bzw. wie man die Sache anpacken muss.
DANKE
Gruß Markus

View full thread Laufzeiten anhand von Logfileeinträge ermitteln