Основы программирования в Linux
Основы программирования в Linux читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
В зависимости от настройки системы сообщения типа
LOG_EMER
LOG_ALERT
LOG_DEBUG
syslog
У сообщения, создаваемого
syslog
message
syslog
format
printf
syslog
printf
message
%m
errno
Выполните упражнение 4.13.
syslog
В этой программе осуществляется попытка открыть несуществующий файл.
#include <syslog.h>
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE *f;
f = fopen("not_here", "r");
if (!f) syslog(LOG_ERR|LOG_USER, "oops - %mn");
exit(0);
}
Когда вы откомпилируете и выполните программу syslog.с, то не увидите никакого вывода, но в конце файла /var/log/messages теперь содержится следующая строка:
Jun 9 09:24:50 suse103 syslog: oops — No such file or directory
Как это работает
В данной программе вы пытаетесь открыть файл, которого нет. Когда попытка заканчивается неудачно, вы вызываете функцию
syslog
Обратите внимание на то, что регистрируемое сообщение не указывает, какая программа вызвала средство регистрации; оно просто констатирует тот факт, что была вызвана функция
syslog
%m
В файле syslog.h определены и другие функции, применяемые для изменения поведения средств ведения системных журналов.
К ним относятся следующие функции:
<b>#include <syslog.h> void closelog(void);</b>
<b>void openlog(const char *ident, int logopt, int facility);</b>
<b>int setlogmask(int maskpri);</b>
Вы можете изменить способ представления ваших регистрируемых сообщений, вызвав функцию
openlog
ident
facility
syslog
LOG_USER
logopt
syslog
OR
Таблица 4.7
Параметр logopt | Описание |
---|---|
LOG_PID | Включает в сообщения идентификатор процесса, уникальный номер, выделяемый системой каждому процессу |
LOG_CONS | Посылает сообщения на консоль, если они не могут быть записаны |
LOG_ODELAY | Открывает средство регистрации сообщений при первом вызове функции syslog |
LOG_NDELAY | Открывает средство регистрации сообщений немедленно, не дожидаясь первого регистрируемого сообщения |
Функция
openlog
closelog
openlog
syslog
Вы можете управлять приоритетом регистрируемых вами сообщений с помощью установки маски регистрации, используя функцию
setlogmask
syslog
LOG_DEBUG
Вы можете создать маску для регистрируемых сообщений, используя значение
LOG_MASK(priority)
LOG_UPTO(priority)
Выполните упражнение 4.14.
logmask
В этом примере вы увидите
logmask
#include <syslog.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>