#include <unistd.h>
#include <stdio.h>
#include <stdarg.h>
#include <syslog.h>
#include <err.h>
#include <CoreFoundation/CoreFoundation.h>
#include "Log.h"
int initLog()
{
openlog(kLogName, LOG_CONS|LOG_ODELAY, LOG_AUTH);
return(0);
}
#define INIT \
CFStringRef aFormattedString; \
CFDataRef aStringData; \
va_list anArgs; \
\
va_start(anArgs, aMessage); \
aFormattedString = CFStringCreateWithFormatAndArguments(NULL, NULL, aMessage, anArgs); \
va_end(anArgs); \
\
aStringData = CFStringCreateExternalRepresentation(NULL, aFormattedString, kCFStringEncodingASCII, '?')
#define FORMAT "%.*s", (int)CFDataGetLength(aStringData), CFDataGetBytePtr(aStringData)
#define RELEASE \
CFRelease(aStringData); \
CFRelease(aFormattedString)
void debug (CFStringRef aMessage, ...)
{
INIT;
syslog(LOG_DEBUG, FORMAT);
printf(FORMAT);
RELEASE;
}
void message (CFStringRef aMessage, ...)
{
INIT;
syslog(LOG_INFO, FORMAT);
printf(FORMAT);
RELEASE;
}
void warning (CFStringRef aMessage, ...)
{
INIT;
syslog(LOG_ALERT, FORMAT);
printf(FORMAT);
RELEASE;
}
void error (CFStringRef aMessage, ...)
{
INIT;
syslog(LOG_ERR, FORMAT);
printf(FORMAT);
RELEASE;
}
void emergency (CFStringRef aMessage, ...)
{
INIT;
syslog(LOG_CRIT, FORMAT);
printf(FORMAT);
RELEASE;
}