Mam jedną konkretną usługę, która rejestruje rzadkie, ale ważne informacje. Założyłem go kilka miesięcy temu, a dziś biegnę journalctl -n 50 --unit=my-service
tylko po to, aby znaleźć wpisy.
Jestem bardzo zadowolony z tego zachowania w przypadku większości jednostek - albo potrzebuję czegoś, co wydarzyło się od razu (lub najwyżej kilka dni temu), i nie dbam o miesięczne rekordy.
Czy istnieje jednak sposób, aby powiedzieć, journald
że ma niezależne zasady przechowywania i przechowywania danych dla pojedynczej konkretnej jednostki? Chcę zachować te konkretne dzienniki przez, powiedzmy, 5 lat - bez względu na rozmiar. Nie powinno to mieć wpływu na dzienniki innych jednostek i powinny zachować swoje dotychczasowe zachowanie.
Tracę trochę zrozumienia journald.conf(5)
i nie mogę zrozumieć, kiedy w ogóle możliwa jest konfiguracja na jednostkę. Jeśli tak - doceniłbym krótki konkretny przykład - który plik powinienem edytować / utworzyć i co napisać. Lub, jeśli wiesz na pewno, że na pewno nie jest to wykonalne - to też byłaby dobra odpowiedź.
UWAGA: Mój szczególny przypadek dotyczy hosta Arch Linux, ale myślę, że nie powinno to mieć większego znaczenia.
źródło
Odpowiedzi:
Wygląda na to, że najprawdopodobniej nie mam szczęścia z dziennikiem. Chyba że wymyślę sposób na założenie niezależnego dziennika „przechowywania długoterminowego” (jak obecnie istnieją różne dzienniki dla poszczególnych użytkowników), ale nie jestem pewien, czy jest to rozsądne i rozsądne podejście. Myślę, że skonfigurowanie syslogd (i logrotate) byłoby łatwiejsze.
Ta funkcja nie była obecna pod koniec 2014 roku , co potwierdził sam Lennart.
I wygląda na to, że jeszcze go tu nie ma. Przynajmniej wiersz „dziennik: dopuszczaj czasy przechowywania według priorytetu i dla usługi podczas obracania / odkurzania” jest nadal w pliku TODO (link do wersji z 07.07.2016).
źródło
Generowanie pliku dziennika jest niezwykle proste. Domyślnie całe logowanie do dziennika jest również przenoszone do syslog i to ustawienie domyślne musi być na miejscu. Plik rsyslog.conf kontroluje sposób obsługi wpisów przekazywanych do syslog. Ponadto
SyslogFacility
domyślniedaemon
tak, aby wpisy dziennika dla dowolnej usługi zwykle kończyły się wdaemon.log
pliku w/var/log
.W pliku usługi dodaj do sekcji [usługa]
(liczba może wynosić od 0 do 7) https://www.freedesktop.org/software/systemd/man/systemd.exec.html
Zmodyfikuj plik /etc/rsyslog.conf (znajdź istniejące linie do modyfikacji), aby local2 był zalogowany do określonego pliku (pierwszy wiersz) i idealnie nie był zalogowany do syslog, dodając
local2.none
jak pokazano (jest już w dzienniku).[edytuj] musisz również poprawić catch all
Oczywiście faktyczne zatrzymanie musi zostać wykonane przez logrotate.
HTH
źródło