TłoJak napisać aplikację C/C++, która zapisuje do katalogu/var/log/myapp?
W systemach Linux Application Logs istnieć w podkatalogach /var/log
, który jest własnością root/root
i ma 755 uprawnienia na moim systemie. Na przykład widzę /var/log/mysql
i /var/log/samba
.
Pytanie
Jeśli chcę MojaApl, aby móc pisać na /var/log/myapp
, co jest kanoniczny sposób od dokonania tego w C/C++?
Myśli
Czy muszę zrobić coś szalonego jak setuid root
jeśli nie chcą sudo a_setup_script.sh
? Zauważ, że znam rutyny syslog
, ale są one niewystarczające dla moich potrzeb (muszę rejestrować znacznie więcej informacji, rozdzielać je na różne pliki, stąd potrzeba podkatalogu).
Czy muszę przejrzeć kombinację opakowania Ubuntu (aby skonfigurować katalog) i bezpośrednio plik IO w podkatalogu (przez myapp)?
Chciałbym przestrzegać norm tak bardzo, jak to możliwe.
Uzupełnienie
Zapomniałem wspomnieć, MojaApl jest rzeczywiście procesy demon (serwer, który słucha klientów), więc to nie byłoby tak źle mieć myapp_user który rzeczywiście działa/rozpoczyna proces.
ODPOWIEDŹ
dla Ubuntu, najlepszym rozwiązaniem wydaje się być rsyslog
, potężny, nowoczesny zamiennik syslog
. W razie potrzeby wygeneruje pliki/katalogi, ma wbudowany język do elastycznego trasowania wpisów syslog
i wykorzystuje prosty, stary interfejs API syslog
na poziomie C/C++. Aby przechowywać informacje o routingu, możesz zdefiniować własne kodowanie wiadomości tekstowej w języku C/C++, w połączeniu z odpowiednim rsyslog.conf
, aby obsługiwać dekodowanie.
czy jesteś pewien, że możesz go użyć z podkatalogami? przeczytaj uważnie mój OP - jeśli zrzucę wszystkie moje pliki do '/ var/log/syslog', sprawi to, że plik będzie bezużyteczny (jest tak dużo rzeczy). – kfmfe04
@ kfmfe04 Tak. Sprawdź aktualizację.Będziesz musiał skonfigurować syslog, aby wysłać _twoja_ komunikaty do _twoj_ plik. Na przykład: 'news.crit /var/log/news/news.crit news.err/var/log/news/news.err' – user2116939
@ kfmfe04 przepraszam za wiele zmian. Komentarze są trochę bolesne. :( – user2116939