logrotate utána nincs log

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

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/

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]

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]

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]

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.