Toon posts:

[php]xml loggen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik zou dus graag een class schrijven die messages naar een file logt. Nu dacht ik eraan om die in xml weg te schrijven, maar daarvoor heb je een probleem omdat xml altijd afgesloten dient te worden met </xml>. Hoe moet ik dan maken dat die xml tag er altijd staat? betekend het dan dat elke keer ik schrijf die xml tag zou moete overschrijven?

Wat zouden jullie doen?

  • Pooh
  • Registratie: April 2001
  • Niet online

Pooh

Lees eens een boek

Wat is je probleem precies? logfile inlezen, "</logfile></XML>" eruit slopen, loggegevens wegschrijven, "</logfile></XML>" toevoegen, klaar?

Verwijderd

Topicstarter
ik dacht dat dat vrij omslachtig is en meer cpu zou innemen dan nodig bij een gewone logfile

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Veel log systemen die naar XML loggen, loggen de echte log-entries niet naar well-formed XML: de omringende tags worden weggelaten en later er om heen gezet als je log wilt gaan gebruiken. Het probleem wat jij signaleert is dus behoorlijk juist :) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Pooh
  • Registratie: April 2001
  • Niet online

Pooh

Lees eens een boek

Verwijderd schreef op 19 september 2002 @ 10:15:
ik dacht dat dat vrij omslachtig is en meer cpu zou innemen dan nodig bij een gewone logfile
Tsja... XML kost je wat overhead ten opzichte van platte tekst. Maar wat wil je nou? Waarom wil je XML gebruiken? Hoeveel/-vaak moet je loggen? Ben je echt bang dat je processor de bottleneck gaat worden? (Kans lijkt me klein, je harddisk houdt er waarschijnlijk veel eerder mee op).

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09-2025

djc

Gewoon de inhoud inlezen en dan een str_replace("</xml>", "*nieuwe inhoud*</xml>", $file);. Op die manier is het in ieder geval nog redelijk efficient.

Rustacean


Verwijderd

Topicstarter
en als de inhoud groot word? enkele duizenden lijnen bijvoorbeeld?

  • Pooh
  • Registratie: April 2001
  • Niet online

Pooh

Lees eens een boek

Manuzhai schreef op 19 september 2002 @ 10:22:
Gewoon de inhoud inlezen en dan een str_replace("</xml>", "*nieuwe inhoud*</xml>", $file);. Op die manier is het in ieder geval nog redelijk efficient.
:? Ik heb niet veel verstand van php, maar dit lijkt mij de meest innefficiente methode. Naar mijn idee gaat-ie dan de hele file door op zoek naar die "</XML>", terwijl je meteen al weet dat -ie aan het einde te vinden is.

Verwijderd

Topicstarter
is er soms een functie die naar de laatste lijn springt en die deze overschrijft? de append mode van fopen doet dit toch al niet

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09-2025

djc

Hmm, je kan de file met file() inlezen, en dan staat in $file[sizeof($file) - 1] de laatste lijn.

Rustacean


  • TheMrH
  • Registratie: April 2000
  • Laatst online: 27-08 20:29
Of je opent de file, fseekt naar het einde - aantal bytes van je afsluitende tags, en schrijft vanaf daar. Bij eindigen van je code sluit je de logfile weer netjes met je sluittags. Klaar!

The box said 'requires Windows 95 or better', so I installed Linux...


  • brammetje
  • Registratie: Oktober 2000
  • Laatst online: 12-01-2025
of je fixed je doc in een dom en add je gewoon een node, maar of dat nou zo efficient is ;)
Pagina: 1