| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- // 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();
- }
|