Fórumok
Lenne egy alkalmazás ami, folyamatosan logol egy file-ba.
Ezt következő formában teszi:
alkalmazas.sh > log.file
Erre tennék egy logrotate-et, ami működik is, de az első rotálás után nem tud az új file-ba írni
logrotate configja:
access.log {
daily
rotate 3
missingok
create 644 wgw wgw
compress
}
Napi szinten kb 9GB log keletkezik. Olvastam a copytruncate opciót, de ez logvesztést okozhat, ha jól értem, amíg kiüríti s file-t.
Ez megoldja a logolási gondot? Valakinek van tapasztalata, mennyi log veszhet el? Esetleg más megoldás?
Hozzászólások
Nem az a gond hogy az alkalmazás nincsen újraindítva ?
Mert attól hogy te kiveszed alóla a logfile-t és újat teszel a helyére, attól a file mutató nem fog rámutatni. Ilyenkor szokás service restart.
Ubuntu 10.04, Thinkpad x61s
Szofisztikaltabban: eleg a HUP signal is.
--
Fedora, RHEL, CentOS, virtualizáció, SELinux: http://sys-admin.hu
Persze ez világos, hogy a file mutató igazából a "semmire" mutat, de azt nem tudtam hogy a > file ezt lekezeli e.
Ilyet még nem tettem :)
Akkor megoldás lehet, ha adok egy kill-t a logrotate-ben, míg az alkalmazást meg berakom az initctl-ba, így megoldódhat a gondom, és minden menne magától.
A a SIGHUP nincs lekezelve akkor b*szhatja!
Nem akarok senkit korholni, de minek feltalálni a szines cérnát, mikor az ár ki van találva. Használj syslogot!
Nézd meg ezt a videót: https://www.doclerholding.com/hu/academy/3/
(reg és bejelentkezés kell)
Ha script akkor a
script | logger -t scriptem -p user.info
leeht a megoldás
----
概略情報
http://molnaristvan.eu/
tettem fel syslog-ng-t, mert ez bizonyult a legjobb megoldásnak
Lehetséges megadni más uid:gid-et adott destination file-ra?
megtaláltam.
destination d_file { file("/var/log/xxx" owner(root) group(zzz)); };
Ser gut!
Ha ezt ráadásul így adod meg:
destination d_file { file("/var/log/zzz/zzz-${YEAR}-${MONTH}-${DAY}.log" owner(root) group(zzz)); };
Akkor még logrotate sem kell, minden nap első logsorakor keletkezik egy új file.
----
概略情報
http://molnaristvan.eu/
De csak 3 nap kell, a többi törölhető. Erre nem találtam jobbat.
Ok csak gondoltam segít :)
Esetleg beteheted csak a törlést logrotate-be (esetleg tömörítést is, de ez akár neked is eszedbe juthatott.)
----
概略情報
http://molnaristvan.eu/
Ha már syslog-ng és file szeparálás.
A filterben a host(regexp) alkalmas arra, hogy szétválasszon több gépről ugyan arra a tcp portra érkező logot?
Egy adott gépről érkező ugyan abba a tcp kapcsolatba terelt több különböző logot mivel tudom szétszedni a fogadó oldalon?
Latok ra eselyt, hogy template-ekkel meg lehessen oldani, hogy csak 3 napot tartson (de fejbol meg nem mondom, hogyan).
Athidalo megoldasnak persze ott van hogy a nap nevet rakod a filenevbe, es akkor hetente 'rotalodik'.
Nomeg persze a kulso program altal rotalas is opcio marad, mindenre meg a syslog-ng sem gyogyir (meg ;).
--
|8]
Templatetel, hogyan???
Illetve a ${WEEK_DAY} , ${WEEK_DAY_NAME} makrókra gondolsz? Tehát pl.:
----
概略情報
http://molnaristvan.eu/
Olyasmire, igen.
Egyebkent meg:
destination d_rotate {
file ("/var/log/zzz/zzz.$(if ("$WEEK_DAY" <= "3") 1 $(if ("$WEEK_DAY" <= 5) 2 3))).log");
}
Vagy valami hasonlo. hetfo-szerda lesz zzz.1.log, csut-pentek zzz.2.log szombat-vasarnap meg zzz.3.log. Mondjuk ez nem teljesen az, hogy az utolso 3 nap, de lehet meg csavarni rajta. Csak nem lesz szep, ugyhogy a $WEEK_DAY-el szvsz jobban jarsz.
--
|8]
Igen ez így borzasztó csúf :D
----
概略情報
http://molnaristvan.eu/
(mellekesen megjegyzem, hogy syslog-ng 3.2-hoz template functiont irni ami pont azt csinalja, amit az ember akar, nevszerint, hogy 3 naponta rotatelje a logot, kb 1 ora 0-rol. Felteve, hogy az ember nem fel C-ben kodolni egy gyorsat. Lehet otthonrol meg is csinalom poenbol :)
--
|8]
Ne felejtsd el közzétenni a kódot
----
概略情報
http://molnaristvan.eu/
Termeszetesen. itt valahol megtalalhato lesz, tippre valami fun/3day-log branchen. Elorelathatolag valamikor 11 utan pusholva, de majd updatelek itt egy jot.
Tevedtem, hamarabb meglett, kb 5 percbe tellet. commit itt, patch itt. 3.3-hoz keszult, de 3.2-re is valoszinuleg gond nelkul felmegy.
Buta a template function, mint a tok, de a celnak megfelel. Leiras a commit message-ben.
--
|8]
overwrite_if_older()
Köszi. Ebből sok mindent megtudtam.
Viszont nekem ez nekem syntax error-t dob.
log { source(s_localhost); host(192.168.1.1); destination(d_file1);};
Így filer-t használatával oldottam meg, azt elfogadta.
Sajnos arra viszont nem találtam részt, hogy ha egy ugyan azon host felől ugyan arra a source felé menő két különböző log-ot hogy lehet két felé irányítani szűréssel tartalomtól függetlenül.
>log { source(s_localhost); host(192.168.1.1); destination(d_file1);};
ez így nem lesz jó
az általános forma ilyen:
log {
source();
filter();
destination();
}
>Sajnos arra viszont nem találtam részt, hogy ha egy ugyan azon host felől ugyan arra a source felé menő két különböző log-ot hogy lehet két felé irányítani szűréssel tartalomtól függetlenül.
két logpath használatával. egyibken filter1 másikban filter2 van.