brintos

brintos / linux-shallow public Read only

0
0
Text · 1.3 KiB · 597d6e7 Raw
78 lines · c
1// SPDX-License-Identifier: LGPL-2.1+2// Copyright (C) 2022, Linaro Ltd - Daniel Lezcano <daniel.lezcano@linaro.org>3#include <stdarg.h>4#include <stdio.h>5#include <string.h>6#include <syslog.h>7#include "log.h"8 9static const char *__ident = "unknown";10static int __options;11 12static const char * const loglvl[] = {13	[LOG_DEBUG]	= "DEBUG",14	[LOG_INFO]	= "INFO",15	[LOG_NOTICE]	= "NOTICE",16	[LOG_WARNING]	= "WARN",17	[LOG_ERR]	= "ERROR",18	[LOG_CRIT]	= "CRITICAL",19	[LOG_ALERT]	= "ALERT",20	[LOG_EMERG]	= "EMERG",21};22 23int log_str2level(const char *lvl)24{25	int i;26 27	for (i = 0; i < sizeof(loglvl) / sizeof(loglvl[LOG_DEBUG]); i++)28		if (!strcmp(lvl, loglvl[i]))29			return i;30 31	return LOG_DEBUG;32}33 34extern void logit(int level, const char *format, ...)35{36	va_list args;37 38	va_start(args, format);39 40	if (__options & TO_SYSLOG)41		vsyslog(level, format, args);42 43	if (__options & TO_STDERR)44		vfprintf(stderr, format, args);45 46	if (__options & TO_STDOUT)47		vfprintf(stdout, format, args);48 49	va_end(args);50}51 52int log_init(int level, const char *ident, int options)53{54	if (!options)55		return -1;56 57	if (level > LOG_DEBUG)58		return -1;59 60	if (!ident)61		return -1;62 63	__ident = ident;64	__options = options;65 66	if (options & TO_SYSLOG) {67		openlog(__ident, options | LOG_NDELAY, LOG_USER);68		setlogmask(LOG_UPTO(level));69	}70 71	return 0;72}73 74void log_exit(void)75{76	closelog();77}78