slogf()

Отправить сообщение в системный журнал

Прототип:

#include <stdio.h>
#include <sys/slog.h>
int slogf( int opcode,
int severity,
const char *fmt,
... );

Аргументы:

opcode
Комбинация major и minor кодов. Создать opcode можно с помощью макроса _SLOG_SETCODE( major, minor ), который определен в <sys/slog.h>. Допустимые major и minor коды определены в <sys/slogcodes.h>.
severity
Степень важности сообщния (см. "Степени важности сообщения" ниже)
fmt
Стандартный формат последующих аргументов в нотации printf().

Дополнительные аргументы должны точно соответствовать fmt по типу и количеству.

Библиотека:

libc

Описание:

Функции семейства slog*() посылают посылают сообщение в системный журнал менеджера slogger. Для отправки форматированного сообщения используется slogf(). Если имеются программы, которые сканируют численные значения в журнале, целесообразно использовать slogb() или slogi().

Функция vslogf() является альтернативной формой slogf(), но принимает аргументы в виде <stdarg.h>.


Caution: В некоторых случаях функция может использовать файловый дескриптор. Будьте осторожны с использованием procmgr_daemon() без флага PROCMGR_DAEMON_NOCLOSE.

Степени важности сообщения

Доступно восемь уровней важности сообщения: 7 (по умолчанию) – наиболее важные и 0 – наименее.

Константа Степень важности Описание
_SLOG_SHUTDOWN 0 Завершение системы
_SLOG_CRITICAL 1 Непредвиденная и неустранимая ошибка (например, ошибка жесткого диска)
_SLOG_ERROR 2 Непредвиденная устранимая ошибка (например, необходимость перезапустить контроллер оборудования)
_SLOG_WARNING 3 Ожидаемая ошибка (например, ошибка четности)
_SLOG_NOTICE 4 Предупреждения (например, закончилась бумага в принтере)
_SLOG_INFO 5 Информационное сообщение
_SLOG_DEBUG1 6 Сообщение отладки (например, общие детали исполнения)
_SLOG_DEBUG2 7 Сообщение отладки (например, расширенные детали исполнения)

Возвращаемое значение:

Размер отправленного slogger сообщения или -1 в случае ошибки.

Коды ошибок:

Любой код ошибки функции MsgSend() или:

EACCES
Недостаточно прав для записи в файл журнала.
EINVAL
Размер буфера данных превышает 255×4 байт или считано нечетное число байт.
ENOENT
Указан некорректный файл журнала или директория, либо slogger не запущен.

Примеры:

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/slog.h>
#include <sys/slogcodes.h>
int main()
{
int i;
for (i = 0 ; ; i++ )
{
switch ( rand() % 3 )
{
case 0:
slogb( _SLOG_SETCODE( _SLOGC_TEST, 0 ), _SLOG_DEBUG1, &i, sizeof( i ) );
break;
case 1:
slogi( _SLOG_SETCODE( _SLOGC_TEST, 1 ), _SLOG_CRITICAL, 1, i );
break;
case 2:
slogf( _SLOG_SETCODE( _SLOGC_TEST, 2 ), _SLOG_ERROR, "This is number %d", i );
break;
}
sleep( 1 );
}
return (EXIT_SUCCESS);
}

Классификация:

ЗОСРВ «Нейтрино»

Точка остановки потока
Да
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Тематические ссылки:

slogb(), slogi(), vslogf()

slogger, sloginfo в Справочнике по Утилитам




Предыдущий раздел: Описание API системной библиотеки