logrotate utána nincs log

 ( kaltsi | 2011. január 23., vasárnap - 19:06 )

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ás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

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.:

destination d_rotate {
file("/var/log/zzz/zzz.${WEEK_DAY}.log");
};

----
概略情報
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]

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.