// SPDX-License-Identifier: LGPL-2.1+// Copyright (C) 2022, Linaro Ltd - Daniel Lezcano <daniel.lezcano@linaro.org>#include <stdarg.h>#include <stdio.h>#include <string.h>#include <syslog.h>#include "log.h" static const char *__ident = "unknown";static int __options; static const char * const loglvl[] = { [LOG_DEBUG] = "DEBUG", [LOG_INFO] = "INFO", [LOG_NOTICE] = "NOTICE", [LOG_WARNING] = "WARN", [LOG_ERR] = "ERROR", [LOG_CRIT] = "CRITICAL", [LOG_ALERT] = "ALERT", [LOG_EMERG] = "EMERG",}; int log_str2level(const char *lvl){ int i; for (i = 0; i < sizeof(loglvl) / sizeof(loglvl[LOG_DEBUG]); i++) if (!strcmp(lvl, loglvl[i])) return i; return LOG_DEBUG;} extern void logit(int level, const char *format, ...){ va_list args; va_start(args, format); if (__options & TO_SYSLOG) vsyslog(level, format, args); if (__options & TO_STDERR) vfprintf(stderr, format, args); if (__options & TO_STDOUT) vfprintf(stdout, format, args); va_end(args);} int log_init(int level, const char *ident, int options){ if (!options) return -1; if (level > LOG_DEBUG) return -1; if (!ident) return -1; __ident = ident; __options = options; if (options & TO_SYSLOG) { openlog(__ident, options | LOG_NDELAY, LOG_USER); setlogmask(LOG_UPTO(level)); } return 0;} void log_exit(void){ closelog();}
// SPDX-License-Identifier: LGPL-2.1+
// Copyright (C) 2022, Linaro Ltd - Daniel Lezcano <daniel.lezcano@linaro.org>
#include <stdarg.h>
#include <stdio.h>
#include <string.h>
#include <syslog.h>
#include "log.h"
static const char *__ident = "unknown";
static int __options;
static const char * const loglvl[] = {
[LOG_DEBUG] = "DEBUG",
[LOG_INFO] = "INFO",
[LOG_NOTICE] = "NOTICE",
[LOG_WARNING] = "WARN",
[LOG_ERR] = "ERROR",
[LOG_CRIT] = "CRITICAL",
[LOG_ALERT] = "ALERT",
[LOG_EMERG] = "EMERG",
};
int log_str2level(const char *lvl)
{
int i;
for (i = 0; i < sizeof(loglvl) / sizeof(loglvl[LOG_DEBUG]); i++)
if (!strcmp(lvl, loglvl[i]))
return i;
return LOG_DEBUG;
}
extern void logit(int level, const char *format, ...)
{
va_list args;
va_start(args, format);
if (__options & TO_SYSLOG)
vsyslog(level, format, args);
if (__options & TO_STDERR)
vfprintf(stderr, format, args);
if (__options & TO_STDOUT)
vfprintf(stdout, format, args);
va_end(args);
}
int log_init(int level, const char *ident, int options)
{
if (!options)
return -1;
if (level > LOG_DEBUG)
return -1;
if (!ident)
return -1;
__ident = ident;
__options = options;
if (options & TO_SYSLOG) {
openlog(__ident, options | LOG_NDELAY, LOG_USER);
setlogmask(LOG_UPTO(level));
}
return 0;
}
void log_exit(void)
{
closelog();
}