* Copyright (c) Huawei Technologies Co., Ltd. 2020-2021. All rights reserved.
* userswap licensed under the Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
* PURPOSE.
* See the Mulan PSL v2 for more details.
* Author: liuyongqiang
* Create: 2020-11-06
* Description: userswap log definition.
******************************************************************************/
#include <stdio.h>
#include <stdarg.h>
#include <syslog.h>
#include <errno.h>
#include "uswap_log.h"
enum log_level g_log_level = USWAP_LOG_ERR;
static void log_level_usage(void)
{
printf("\n"
"[0] for debug level\n"
"[1] for info level\n"
"[2] for warning level\n"
"[3] for error level\n"
"default level is error\n"
"\n");
}
int uswap_log_level_init(enum log_level level)
{
if (level < 0 || level >= USWAP_LOG_INVAL) {
printf("error: invalid log level [%d]\n", level);
log_level_usage();
return -EINVAL;
}
g_log_level = level;
return 0;
}
void uswap_log(enum log_level level, const char *format, ...)
{
va_list args;
if (level < g_log_level) {
return;
}
va_start(args, format);
switch (level) {
case USWAP_LOG_DEBUG:
openlog("[uswap_debug] ", LOG_PID, LOG_USER);
vsyslog(LOG_INFO, format, args);
break;
case USWAP_LOG_INFO:
openlog("[uswap_info] ", LOG_PID, LOG_USER);
vsyslog(LOG_INFO, format, args);
break;
case USWAP_LOG_WARN:
openlog("[uswap_warn] ", LOG_PID, LOG_USER);
vsyslog(LOG_WARNING, format, args);
break;
case USWAP_LOG_ERR:
openlog("[uswap_error] ", LOG_PID, LOG_USER);
vsyslog(LOG_ERR, format, args);
break;
default:
openlog("[uswap_error] ", LOG_PID, LOG_USER);
vsyslog(LOG_ERR, "invalid uswap_log_level\n", args);
}
va_end(args);
closelog();
return;
}