[ karas @ 07.11.2006. 14:45 ] @
| Zna li neko za program ili skript koji skraćuje tekstualni fajl sa početka (truncate() u kontra smeru, tj. omogućava da se obrišu sve linije osim zadatih N poslednjih). Fajl koji se skraćuje je log fajl što znači da se u njega sve vreme upisuje, pa program treba da vodi računa o tome da zabrani upisivanje dok se radi skraćivanje. Perl skripte koje sam video koriste system() što bih takođe da izbegnem. Izvorni kod programa se podrazumeva, po mogućstvu u C-u. |
[ random @ 07.11.2006. 22:54 ] @
Probaj sa logrotate, dolazi uz skoro svaku Linux distribuciju.
[ karas @ 08.11.2006. 11:06 ] @
logrotate skraćuje fajl na nulu, ja bih da mu zadam koliko poslednjih linija loga da ostavi. Dalje, u manualu piše da između kopiranja i skraćivanja fajla može doći do gubljenja podataka u logu, što bih da izbegnem.
[ chupcko @ 08.11.2006. 12:24 ] @
Pa sta god radio uvek ima problema :)))
E sada prvo pitanje da li program koji loguje otvori jednom na pocetku file ili za svaki upis otvara file.
Zasto je ovo bitno, jer u prvom slucaju mozes da se igras sa rename (i dalje upisuje u taj file, jer je vec otvoren), sada mozes da se igras sa gomilom stvari.
A u drugom slucaju nista ti ne pomaze, jer nikada se ne zna kada ce krenuti da pise.
U svakom slucaju najbolje da sam napravis neki loger, koji ce da cuva sve u kruznom baferu, a i plus da snima na fajl sistem ako treba.
Dakle cije logove zelis na taj nacin da obradis?
[ karas @ 09.11.2006. 11:02 ] @
Vishe instanci jednog procesa upisuje u log. Fajl se jednom otvori i ne zatvara se, samo se dopisuje na kraj fajla. Nadao sam se da je neko vecc reshavao ovakav problem.:)
[ chupcko @ 09.11.2006. 12:20 ] @
Aha, jos ako na neki signal (HUP je dusu dalo) zatvoris i otvoris log ...
Naravno jos jedna stvar, da li program obrise log datoteku ili nastavi da pise na kraju.
Ali i dalje mislim da neces lako da resis. Ja bi definitno realizovao svoj kruzni buffer za log i plus sve jos ka syslog-u.
Lepo dignes socket, pa sve sto stigne ubacis u memoriju, naravno mozes da dignes drugi socket koji ce da ti isporuci trenutni sadrzaj bafera, ili pipe, poigraj se malo sa tim :), naravno sve sto dobijes na ovom prvom socketu posaljes jos i na syslog, i eto ti savrsenog sistema za logovanje :).
Naravno jednog dana kada ti program naraste, moci ces lako da logujes na drugoj masini , sto zna nekada da bude veoma vazno :).
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.