Napisałem prostą aplikację testową, aby zarejestrować coś w pliku dziennika. Używam linux mint i po uruchomieniu aplikacji próbuję wyświetlić dziennik za pomocą tego polecenia:
tail -n 100 /var/log/messages
ale komunikaty pliku nie istnieją ani sprawdzone, ani coś takiego. Poniżej znajdziesz mój kod. Może robię coś nie tak, plik nie jest tam zapisany lub muszę włączyć logowanie do linux mint.
#include <stdio.h>
#include <stdlib.h>
#include <syslog.h>
void init_log()
{
setlogmask(LOG_UPTO(LOG_NOTICE));
openlog("testd",LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1);
}
int main(void) {
init_log();
printf("Session started!");
syslog(LOG_NOTICE, "Session started!!");
closelog();
return EXIT_SUCCESS;
}
/etc/
którym musisz zmienić swój identyfikator ("test"
w twoim przypadku) i placówkę.Odpowiedzi:
Na moim komputerze z Ubuntu widzę dane wyjściowe pod adresem
/var/log/syslog
.Na maszynie RHEL / CentOS dane wyjściowe znajdują się w
/var/log/messages
.Jest to kontrolowane przez
rsyslog
usługę, więc jeśli jest wyłączone z jakiegoś powodu, być może trzeba będzie go uruchomićsystemctl start rsyslog
.Jak zauważyli inni, Twoje
syslog()
dane wyjściowe będą rejestrowane w/var/log/syslog
pliku.Możesz zobaczyć logi systemowe, użytkownika i inne pod adresem
/var/log
.Aby uzyskać więcej informacji: oto interesujący link .
źródło
/var/log/syslog
jest to jakikolwiek rodzaj prawdziwej niewypłacalności; być może Ubuntu sam to konfiguruje.Oprócz zaakceptowanej odpowiedzi warto znać następujące informacje ...
Z każdą z tych funkcji powinny być skojarzone strony podręcznika .
Jeśli uruchomisz
man -k syslog
(wyszukiwanie słów kluczowych w stronach podręcznika), otrzymasz listę stron podręcznika, które odnoszą się do syslog lub są o nim$ man -k syslog logger (1) - a shell command interface to the syslog(3) system l... rsyslog.conf (5) - rsyslogd(8) configuration file rsyslogd (8) - reliable and extended syslogd syslog (2) - read and/or clear kernel message ring buffer; set c... syslog (3) - send messages to the system logger vsyslog (3) - send messages to the system logger
Musisz zrozumieć sekcje instrukcji, aby zagłębić się dalej.
Oto fragment strony man dla man, który wyjaśnia sekcje strony man:
The table below shows the section numbers of the manual followed by the types of pages they contain. 1 Executable programs or shell commands 2 System calls (functions provided by the kernel) 3 Library calls (functions within program libraries) 4 Special files (usually found in /dev) 5 File formats and conventions eg /etc/passwd 6 Games 7 Miscellaneous (including macro packages and conven‐ tions), e.g. man(7), groff(7) 8 System administration commands (usually only for root) 9 Kernel routines [Non standard]
Aby przeczytać powyższe uruchom
Tak więc, jeśli uruchomisz
man 3 syslog
, otrzymasz pełną stronę podręcznika dlasyslog
funkcji, którą wywołałeś w swoim kodzie.SYSLOG(3) Linux Programmer's Manual SYSLOG(3) NAME closelog, openlog, syslog, vsyslog - send messages to the system logger SYNOPSIS #include <syslog.h> void openlog(const char *ident, int option, int facility); void syslog(int priority, const char *format, ...); void closelog(void); #include <stdarg.h> void vsyslog(int priority, const char *format, va_list ap);
Nie jest to bezpośrednia odpowiedź, ale miejmy nadzieję, że okaże się przydatna.
źródło
Domyślna lokalizacja dziennika (rhel) to
Wiadomości ogólne:
/var/log/messages
Wiadomości uwierzytelniające:
/var/log/secure
Wydarzenia pocztowe:
/var/log/maillog
Sprawdź swoje
/etc/syslog.conf
lub/etc/syslog-ng.conf
(zależy to od zainstalowanego narzędzia syslog)Przykład:
$ cat /etc/syslog.conf # Log anything (except mail) of level info or higher. # Don't log private authentication messages! *.info;mail.none;authpriv.none /var/log/messages # The authpriv file has restricted access. authpriv.* /var/log/secure # Log all the mail messages in one place. mail.* /var/log/maillog #For a start, use this simplified approach. *.* /var/log/messages
źródło
Musisz poinformować system, jakie informacje mają rejestrować i gdzie je umieścić. Rejestrowanie jest konfigurowane w
/etc/rsyslog.conf
pliku, a następnie zrestartuj rsyslog, aby załadować nową konfigurację. Domyślne reguły rejestrowania są zwykle w/etc/rsyslog.d/50-default.conf
pliku.źródło
syslog () generuje komunikat dziennika, który zostanie rozesłany przez syslogd.
Plik do skonfigurowania syslogd to /etc/syslog.conf. Ten plik powie ci, gdzie są rejestrowane wiadomości.
Jak zmienić opcje w tym pliku? Tutaj możesz http://www.bo.infn.it/alice/alice-doc/mll-doc/duix/admgde/node74.html
źródło
Logowanie jest bardzo konfigurowalne w Linuksie i możesz zajrzeć do swojego
/etc/syslog.conf
(lub może poniżej/etc/rsyslog.d/
). Szczegóły zależą od podsystemu rejestrowania i dystrybucji.Zajrzyj także do plików poniżej
/var/log/
(i być może uruchom wdmesg
poszukiwaniu dzienników jądra).źródło
Używam Ubuntu pod WSL (Podsystem Windows dla Linuksa) i
systemctl start rsyslog
nie działa dla mnie.Oto co zrobiłem:
Teraz
syslog
plik pojawi się pod adresem/var/log/
źródło