Где linux хранит мой syslog?
Я написал простое тестовое приложение для записи в файл журнала. Я использую linux mint, и после выполнения приложения я пытаюсь просмотреть журнал с помощью этой команды:
tail -n 100 /var/log/messages
но файлы сообщений не существуют ни в тестировании, ни в чем-либо. Ниже вы можете найти мой код. Возможно, я делаю что-то неправильно, файл там не хранится, или мне нужно включить ведение журнала в 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;
}
Ответы
Ответ 1
На моей машине с Ubuntu я вижу результат на /var/log/syslog
.
На машине RHEL/CentOS выходные данные находятся в /var/log/messages
.
Это контролируется службой rsyslog
, поэтому, если она по какой-то причине отключена, вам может потребоваться запустить ее с systemctl start rsyslog
.
Как отметили другие, ваш вывод syslog()
будет записан в файл /var/log/syslog
.
Вы можете увидеть системные, пользовательские и другие журналы на /var/log
.
Для более подробной информации: здесь интересная ссылка.
Ответ 2
В дополнение к принятому ответу полезно знать следующее...
Каждая из этих функций должна иметь связанные с ними справочные страницы.
Если вы запустите man -k syslog
(поиск по ключевым словам man-страниц), вы получите список справочных страниц, на которые ссылается, или около syslog
$ 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
Вам нужно понять разделы руководства, чтобы продолжить дальше.
Здесь выдержка из man-страницы для человека, которая объясняет разделы 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]
Чтобы прочитать приведенный выше пробег
$man man
Итак, если вы запустите man 3 syslog
, вы получите полную страницу руководства для функции syslog
, которую вы вызывали в своем коде.
SYSLOG(3) Linux Programmer 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);
Не прямой ответ, но, надеюсь, вы найдете это полезным.
Ответ 3
Местоположение журнала по умолчанию (rhel)
Общие сообщения:
/var/log/messages
Сообщения аутентификации:
/var/log/secure
Почтовые события:
/var/log/maillog
Проверьте ваш /etc/syslog.conf
или /etc/syslog-ng.conf
(это зависит от того, какое из средств syslog вы установили)
Пример:
$ 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
Ответ 4
Вы должны сообщить системе, какую информацию регистрировать и где разместить информацию. Ведение журнала настраивается в файле /etc/rsyslog.conf
, затем перезапустите rsyslog для загрузки новой конфигурации. Правила ведения журнала по умолчанию обычно находятся в файле /etc/rsyslog.d/50-default.conf
.
Ответ 5
syslog() генерирует сообщение журнала, которое будет распространяться syslogd.
Файл для настройки syslogd - это /etc/syslog.conf. Этот файл скажет вам, где сообщения регистрируются.
Как изменить параметры в этом файле? Вот и вы http://www.bo.infn.it/alice/alice-doc/mll-doc/duix/admgde/node74.html
Ответ 6
Ведение журнала очень настраивается в Linux, и вы можете захотеть заглянуть в свой /etc/syslog.conf
(или, возможно, под /etc/rsyslog.d/
). Детали зависят от подсистемы регистрации и распределения.
Смотрите также файлы под /var/log/
(и, возможно, запустите dmesg
для журналов ядра).