#include "global.h"
extern char *__progname;
/*
* mqtt_rtlm_log() Log message
*
* @fmt = format string
* @... = argument list
* return: none
*/
static void
mqtt_rtlm_log(const char *fmt, ...)
{
va_list lst;
va_start(lst, fmt);
vsyslog(LOG_ERR, fmt, lst);
va_end(lst);
}
#define MQTT_RTLM_LOG() (mqtt_rtlm_log("Error:: System #%d - %s", errno, strerror(errno)))
/*
* mqtt_rtlm_open() Open log file
*
* @cfg = loaded config
* return: NULL error or SQL handle
*/
FILE *
mqtt_rtlm_open(sl_config *cfg)
{
FILE *f = NULL;
const char *str = NULL;
if (!cfg)
return NULL;
str = (const char*) cfg_GetAttribute(cfg, CFG("mqtt_log"), CFG("name"));
if (!str) {
mqtt_rtlm_log("Error:: Unknown file name ...\n");
return NULL;
}
if (!(f = fopen(str, "a"))) {
MQTT_RTLM_LOG();
return NULL;
}
return f;
}
/*
* mqtt_rtlm_close() Close log file
*
* @f = File handle
* return: none
*/
void
mqtt_rtlm_close(FILE *f)
{
if (f)
fclose(f);
}
/*
* mqtt_rtlm_logger() Logger to file
*
* @f = File handle
* @fmt = Message format
* @... = argument list
* return: -1 error or >-1 logged successful
*/
int
mqtt_rtlm_logger(FILE *f, const char *fmt, ...)
{
va_list lst;
int ret = 0;
char szStr[STRSIZ] = { 0 }, szFmt[BUFSIZ] = { 0 };
struct tm *tm;
time_t tim;
if (!f || !fmt)
return -1;
tim = time(NULL);
tm = localtime(&tim);
strftime(szFmt, sizeof szFmt, "[%Y-%m-%d %H:%M:%S] ", tm);
snprintf(szStr, sizeof szStr, "%s (%d):: ", __progname, getpid());
strlcat(szFmt, szStr, sizeof szFmt);
strlcat(szFmt, fmt, sizeof szFmt);
va_start(lst, fmt);
ret = vfprintf(f, szFmt, lst);
va_end(lst);
fflush(f);
return ret;
}
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>