77 lines · 1.3 KB · C
RawDownload
// 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();}