Új hozzászólás Aktív témák

  • sztanozs

    veterán

    válasz Parameter #4109 üzenetére

    De amit becsatoltál, az excel volt - ezért VBA-ban írtam meg... Milyen formában elérhetők a kódok?

    Favágó logika: végigmegyek soronként és ha valahol OUT van, akkor (szubrutinban) a következőtől kezdve megkeresem az első IN-t és összehasonlítom a megfelelő mezőket. Ha egyeznek, akkor a végére kiírom az időt, ha nem találok egyezőt, akkor kiírom, hogy nincs egyező.
    Ezzel amúgy két probléma van
    1) ha valamiért nincs IN (nem került be a logba), akkor egy korábbi IN-t fog megtalálni (esetleg több out is megkapja ugyanazt az IN időpontot)
    2) Ha nagyon hosszú a fájl és hosszúak a session-ök, akkor közel exponenciálisan nö a feldolgozási idő

    Ennél jobb módszer, ha sorban dolgozod fel a logokat és egy struktúrába berakod az összes OUT-ot és menet közben szépen ellenőrzöd az IN-eket is. Ha találtál párt akkor az adott OUT sorát frissíted, majd kiveszed a struktúrából. Ami pedig a feldolgozás végén marad, ahhoz odaírod, hogy nem találtál IN-t.
    Ez a módszer fájl-alapú logolásnál működhet, de azok a session-ök nem lesznek azonosíthatók, amelyek nyitása az előző fájlokban voltak.

    Ha pedig realtime log feldolgozás van (syslog) - vagy a log (egyébként így szokott lenni) időrendben növekvő (legkorábbi esemény van a fájl elején) rendben van, akkor érdemes az IN-eket letárolni (mivel ugye azt kapod meg először). Ha később jön egy (neki megfelelő) OUT sor, akkor az ahhoz tartozó IN dátumát beírni mellé és az IN-t kivenni az ideiglenes tárból...

    [ Szerkesztve ]

    JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

Új hozzászólás Aktív témák