Konzentration der log-Datei?

Thomas Berger ThB at gymel.com
Sa Dez 7 21:48:38 CET 2002


Lieber Herr Allers,

> Hat mal jemand eine Prozedur (mit oder ohne Allegro-Mittel) entwickelt, mit der die Dateien
> <dbn>.log "konzentriert" werden?
> 
> Mit "Konzentration" meine ich hier: Dafür sorgen, daß z.B., wenn ein Datensatz neuerfaßt und
> dann 3 Mal korrigiert wurde, er in einer "konzentrierten" Log-Datei nur einmal, und zwar als
> Neukatalogisat in seiner endgültigen Fassung auftaucht.

Mit Perl ist das recht einfach: Man liest die Datei zweimal
nacheinander ein, beim ersten mal merkt man sich in einem
Hash das jeweils letzte Vorkommen eines Satzes, beim 
zweiten Mal gibt man aus (Nicht getestet):

#!perl -w
my $dbn = shift;
open (PASS1, "<$dbn.log") or die "kannInet";
while ( <PASS1> ) {
    /[\x01\x00]00 ([^\x00]+)\x00/;
    $merk{$1} = $.;
  }
close (PASS1);
open (PASS2, "<$dbn.log");
while ( <PASS2> ) {
    /[\x01\x00]00 ([^\x00]+)\x00/;
    print $_ if $merk{$1} == $.;
  }

(das war jetzt fuer eine .alg-Datei, wie sie log2alg
produziert: Echte Log- und .ald-Dateien haben 4 reine 
Binaerzeichen drin, da muss man viel vorsichtiger bei 
Lesen sein, jede Zeile, die weniger als 5 Zeichen hat,
muss mit der / den folgenden erst zusammengefasst werden,
bevor es einen Datensatz ergibt).

Der Sinn der Methode ist recht fragwuerdig, sobald man
an Stammsatzverknuepfungen denkt oder auch nur an
Neusaetze und Loeschungen: Im Prinzip muss man Neusaetze
und Loeschungen stets an der Stelle der Datei ausgeben,
wo sie auftreten, das "Komprimieren" darf nur fuer
echte Bearbeitungen erfolgen (Im obigen Beispiel nicht
beruecksichtigt)

viele Gruesse
Thomas Berger




Mehr Informationen über die Mailingliste Allegro