#if !defined(PS_LOG_MSG_H)
#define PS_LOG_MSG_H

/** \file psLogMsg.h
 *  \brief log messaging facilities
 *  \ingroup SystemGroup
 */

#include <stdarg.h>

/** Functions **************************************************************/
/** \addtogroup SystemGroup System Utilities 
 *  \{
 */

/// Sets the log destination 
bool psLogSetDestination(const char *dest);	

/// Sets the log level
int psLogSetLevel(int level);		

/// sets the log format
void psLogSetFormat(const char *fmt);	

/// Logs a message
void psLogMsg(const char *name,		///< name of the log source
	      int myLevel, 		///< severity level of this log message 
	      const char *fmt, ...)	///< printf-style format command
; 

/// Logs a message from varargs
void psLogMsgV(const char *name,	///< name of the log source
	       int myLevel,		///< severity level of this log message 
	       const char *fmt, 	///< printf-style format command
	       va_list ap)		///< varargs argument list
; 

/* \} */ // End of SystemGroup Functions

enum { PS_LOG_ABORT = 0, PS_LOG_ERROR, PS_LOG_WARN, PS_LOG_INFO }; ///< Status codes for log messages

enum { PS_LOG_NONE = 0, PS_LOG_TO_STDERR = -1, PS_LOG_TO_STDOUT = -2 }; ///< Destinations for log messages

#endif
