代码拉取完成,页面将自动刷新
/**
* Copyright (c) 2020 rxi
*
* This library is free software; you can redistribute it and/or modify it
* under the terms of the MIT license. See `log.c` for details.
*/
#ifndef LOG_H
#define LOG_H
#include <stdarg.h>
#include <stdbool.h>
#include <stdio.h>
#include <time.h>
#define LOG_VERSION "0.1.0"
typedef struct {
va_list ap;
const char *fmt;
const char *file;
struct tm *time;
void *udata;
int line;
int level;
} log_Event;
typedef void ( *log_LogFn )( log_Event *ev );
typedef void ( *log_LockFn )( bool lock, void *udata );
enum { LOG_TRACE, LOG_DEBUG, LOG_INFO, LOG_WARN, LOG_ERROR, LOG_FATAL };
#define logTrace( ... ) logLog( LOG_TRACE, __FILE__, __LINE__, __VA_ARGS__ )
#define logDebug( ... ) logLog( LOG_DEBUG, __FILE__, __LINE__, __VA_ARGS__ )
#define logInfo( ... ) logLog( LOG_INFO, __FILE__, __LINE__, __VA_ARGS__ )
#define logWarn( ... ) logLog( LOG_WARN, __FILE__, __LINE__, __VA_ARGS__ )
#define logError( ... ) logLog( LOG_ERROR, __FILE__, __LINE__, __VA_ARGS__ )
#define logFatal( ... ) logLog( LOG_FATAL, __FILE__, __LINE__, __VA_ARGS__ )
const char *log_level_string( int level );
void log_set_lock( log_LockFn fn, void *udata );
void log_set_level( int level );
void log_set_quiet( bool enable );
int log_add_callback( log_LogFn fn, void *udata, int level );
int log_add_fp( FILE *fp, int level );
void logLog( int level, const char *file, int line, const char *fmt, ... );
#endif
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。