Napisałem prosty program, dziennik danych, do dzielenia wspólnych dzienników na podstawie zarejestrowanej daty, w przeciwieństwie do bieżącego czasu systemowego, gdy program widzi linię dziennika. To może, ale nie musi być dokładnie to, co robi cronolog lub inny rozdzielacz logów, ale napisanie własnego było szybsze niż sprawdzenie, co robią inni.
Wykorzystując rok i miesiąc w zarejestrowanym żądaniu, wiersz jest następnie zapisywany w pliku lub potoku, który zawiera RRRRMM obliczony na podstawie zarejestrowanych danych. Tak, jest to nieco specyficzne dla wspólnego formatu dziennika. Pierwszy [zakłada się, że wyznacza datę. Uważaj na adresy IPv6. :)
W przypadku analizy dziennika ważne jest, aby każdy dziennik zawierał tylko żądania dla każdego odpowiedniego miesiąca, a każdy dziennik powinien być idealnie kompletny, aby uzyskać poprawne wyniki analizy. Nie wystarczy określić nazwę pliku na podstawie aktualnego czasu w rozdzielaczu dziennika, ponieważ wolne żądanie zaczynające się o 23:59:59 skończy w pliku dziennika dla niewłaściwego miesiąca.
Używam tego z nginx jako nazwany fifo, który sprawdza się przed uruchomieniem nginx. Zauważ, że w programie występuje kompromis między wykrywaniem błędów a buforowanym wyjściem, w którym dziennik danych obecnie preferuje buforowane wyjście ze względu na wydajność, więc upewnij się, że konfiguracja naprawdę działa, szczególnie podczas korzystania z potoków powłoki, aby nie stracić żadnych danych dziennika .
Kod źródłowy: http://stuge.se/datelog.c
Prześlij mi swoją opinię i oczywiście łatki!