[Previous] [Contents] [Next]

slogf()

Send a message to the system logger

Synopsis:

#include <stdio.h>
#include <sys/slog.h>

int slogf( int opcode,
           int severity, 
           const char * fmt,
           ... );

int vslogf( int opcode,
            int severity, 
            const char * fmt,
            va_list arg );

Library:

libc

Description:

The slog*() functions send log messages to the system logger, slogger. To send formatted messages, use slogf(). If you have programs that scan log files for specified codes, you can use slogb() or slogi() to send a block of structures or int's, respectively.

The vslogf() function is an alternate form in which the arguments have already been captured using the variable-length argument facilities of <stdarg.h>.

The arguments for slogf() are as follows:

opcode
A combination of a major and minor code.
severity
Severity of the log message.
fmt
A standard printf() string followed by printf() arguments.

opcode

You create the opcode using the _SLOG_SETCODE(major, minor) macro that's defined in <sys/slog.h>.

The major and minor codes are defined in <sys/slogcodes.h>.

severity

There are eight levels of severity defined. The lowest severity is 7 and the highest is 0. The default is 7.

Manifest Name Severity value Description
_SLOG_SHUTDOWN 0 Shut down the system NOW (e.g. for OEM use)
_SLOG_CRITICAL 1 Unexpected unrecoverable error (e.g. hard disk error)
_SLOG_ERROR 2 Unexpected recoverable error (e.g. needed to reset a hardware controller)
_SLOG_WARNING 3 Expected error (e.g. parity error on a serial port)
_SLOG_NOTICE 4 Warnings (e.g. out of paper)
_SLOG_INFO 5 Information (e.g. printing page 3)
_SLOG_DEBUG1 6 Debug messages (normal detail)
_SLOG_DEBUG2 7 Debug messages (fine detail)

Returns:

The size of the message sent to slogger, or -1 if an error occurs.

Errors:

Any value from the Errors section in MsgSend(), as well as:

EACCES
Insufficient permission to write to the log file.
EINVAL
The size of the data buffer exceeds 255*4 bytes, or an odd number of bytes is being read.
ENOENT
Invalid log file or directory specified, or slogger isn't running.

Examples:

#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);
  }
}

Classification:

QNX 6

Safety:
Cancellation point Yes
Interrupt handler No
Signal handler Yes
Thread Yes

See also:

slogb(), slogi(), vslogf()

slogger, sloginfo in the Utilities reference


[Previous] [Contents] [Next]