Подтвердить что ты не робот

Где 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;
}
4b9b3361

Ответ 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 для журналов ядра).