/*
* salog.h
*
* System Administration logging.
*
* Copyright (c) 1995, 2000 Silicon Graphics, Inc. All Rights Reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of version 2.1 of the GNU Lesser General Public
* License as published by the Free Software Foundation.
*
* This program is distributed in the hope that it would be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
* Further, this software is distributed without any warranty that it is
* free of the rightful claim of any third person regarding infringement
* or the like. Any license provided herein, whether implied or
* otherwise, applies only to this software file. Patent licenses, if
* any, provided herein do not apply to combinations of this program
* with other software, or any other product whatsoever.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this program; if not, write the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
* USA.
*
* Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
* Mountain View, CA 94043, or http://www.sgi.com/
*
* For further information regarding this notice, see:
* http://oss.sgi.com/projects/GenInfo/NoticeExplan/
*/
#ident "$Revision: 1.9 $"
#ifndef _SALOG_H_
#define _SALOG_H_
#ifdef __cplusplus
extern "C" {
#endif
#include <sysadm/sysadm.h>
#include <sys/types.h>
#include <stdarg.h>
#include <syslog.h>
/**
* Opaque handle for logging API.
*/
typedef struct _SaLog SaLog;
/**
* Return status of functions
*/
typedef enum { SaLogStatusError = -1, SaLogStatusOK = 0 } SaLogStatus;
/**
* Error codes
*/
typedef enum {
SaLogErrNoError, /* No error */
SaLogErrSys, /* System call failed */
SaLogErrNoMem, /* Out of memory */
SaLogErrCantLock /* Unable to lock system admin log */
} SaLogErrorCode;
/**
* Type of a log message.
*
* SaLogError Error message.
* SaLogWarning Warning message.
* SaLogCommand shell commands which were run. These are
* normally only logged by runpriv(1M).
* SaLogMessage Human-readable message describing what was done.
*/
typedef enum {
SaLogError,
SaLogWarning,
SaLogCommand,
SaLogMessage
} SaLogMsgType;
/**
* Open the System Administration log for writing. "command" should
* be the name of the command that is calling the log functions.
*/
SaLogErrorCode SaLogOpen(const char *command, SaLog **logReturn);
/**
* Get the error code of the last SaLog function that returned
* SaLogStatusError.
*/
SaLogErrorCode SaLogGetErrorCode(SaLog *log);
/**
* Translate an error code to a string.
*/
const char *SaLogErrorCodeToString(SaLogErrorCode errorCode);
/**
* Get an error string describing the failure of the last SaLog
* function that returned SaLogStatusError. This is equivalent to
* calling:
*
* SaLogErrorCodeToString(log, SaLogGetErrorCode(log));
*/
const char *SaLogGetErrorString(SaLog *log);
/**
* Set the process id that gets logged by SaLogWriteMsg.
*/
void SaLogSetPid(SaLog *log, pid_t pid);
/**
* Set the process user id that gets logged by SaLogWriteMsg.
*/
void SaLogSetUid(SaLog *log, uid_t uid);
/**
* Set the host name that gets logged by SaLogWriteMsg.
*/
void SaLogSetHost(SaLog *log, const char *host);
/**
* Set the command name that gets logged by SaLogWriteMsg.
*/
void SaLogSetCommand(SaLog *log, const char *command);
/**
* If "logToSysLog" is B_TRUE, log messages will be copied to syslog.
* Setting "logToSysLog" to B_FALSE will prevent log messages from
* being copied to syslog unless the "syslog" flag is set in
* /var/sysadm/salog.conf. Default value is B_FALSE.
*/
void SaLogSetSysLogFlag(SaLog *log, bool logToSysLog);
/**
* if "perrorFlag", messages of type "SaLogError" will get copied to
* stderr. Default value is B_TRUE.
*/
void SaLogSetPerrorFlag(SaLog *log, bool perrorFlag);
/**
* Write a message to the log. formatString and varargs as in printf.
*/
SaLogStatus SaLogWriteMsg(SaLog *log, SaLogMsgType type,
const char *formatString, ...);
SaLogStatus SaLogWriteMsgv(SaLog *log, SaLogMsgType type,
const char *formatString, va_list args);
/**
* Close the log.
*/
void SaLogClose(SaLog *log);
/**
* Globally accessible copy of the last SaLog pointer returned by
* SaLogOpen. Useful for using SaLogWriteMsg from library routines.
*/
extern SaLog *theSaLog;
#ifdef __cplusplus
}
#endif
#endif /* _SALOG_H_ */
| Generated by: rusty@irem on Mon Sep 18 18:07:52 2000, using kdoc 2.0a36. |