MasterBLB napisał(a)
Okay,skoro mówcie iż ta autorotacja jest takim użytecznym ficzerem to ją zapodam.Jedynie co do tego zmieniania nazw wszystkich plików mam zastrzeżenia,ja wolę zrobić to tak:
1.Każę logerowi logować do pliku log.txt
2.Po spełnieniu wymogów limitu log.txt jest zamykany a tworzony jest nowy plik log2.txt i teraz logi lecą do niego
3.itd,itp
To nie jest dobry pomysł.
Po pierwsze, jako admin chcę szybko wyświetlić zawartość pliku logu, bez zastanawiania się i dociekania który indeks jest aktualnie obowiązujący.
Po drugie, różne narzędzia analizujące logi odczytują tylko jeden plik, o bazowej nazwie.
Po trzecie, jak w ten sposób chcesz załatwić sprawę przedawnionych archiwów? Przy numeracji odwrotnej są pliki od ".1" do ".maksimum". Przy Twojej numeracji po kilku miesiącach będą pliki z milionowymi liczbami w nazwie, a są usługi które działają przez lata bez restartu.
MasterBLB napisał(a)
Podsumujmy jeszcze tylko,wg jakich kryteriów ma się plik logu wypełniać i być zamykany
-czasowe,tj o okreśonej godzinie
Tak. W ten sposób można sobie rozdzielić pliki logu według dni.
MasterBLB napisał(a)
-ilością wpisów(wierszy) w pliku
To nie ma zastosowania. Rotowanie po rozmiarze robi się w celu zmniejszenia ryzyka zapchania quoty. Np. ustala się 110MB na logi - 10 plików archiwum po 10MB. Jesli ograniczasz po ilości linii, to nigdy nie wiadomo jakiej długości te linie będą. Wystarczy popatrzeć na logi serwera WWW żeby stwierdzić, że przy próbach ataku te linie mogą być baaaardzo długie.
Kolejny problem to otwarcie już istniejącego pliku logu (np. po restarcie usługi). Musiałbyś przeliczyć wszystkie linie jakie w nim są żeby odpowiednio zainicjować licznik zapisanych już linii. To może być bardzo mało wydajne przy dużych plikach.
MasterBLB napisał(a)
-rozmiarowo,czyli jak plik logu osiągnie zadany rozmiar
Nie "osiągnie". Kiedy "przekroczy". Nie będziesz przecież łamał linii w połowie żeby zmieścić się w rozmiarze pliku. Po zapisaniu każdej linii sprawdzasz czy rozmiar (sumuj długości wpisów, nie odpalaj stat() na pliku za każdym razem) przekroczył zadany i jeśli tak, wykonaj rotację.
MasterBLB napisał(a)
-jakieś jeszcze?
Nic mi już nie przychodzi do głowy.
MasterBLB napisał(a)
A,powiedzcie koledzy czy widzicie potrzebę logowania warningów,debugów i errorów do oddzielnych plików?
Ja nie widze takiej potrzeby. Od tego jest grep ;)
P.S. W razie czego mogę udostępnić moją implementację rotującego file loggera dla GObjectowego systemu rejestracji zdarzeń. Niestety, rotuje tylko po rozmiarze i nie kompresuje (nie było mi to potrzebne).