cemu
载入中...
搜索中...
未找到
log.h 文件参考

日志库头文件 更多...

#include <stdio.h>
#include <stdarg.h>
#include <stdbool.h>
#include <string.h>
#include "color.h"

浏览源代码.

struct  log_Event
 日志事件结构体 更多...
 
struct  Callback
 日志回调结构体 更多...
 

宏定义

#define LOG_VERSION   "0.1.0"
 
#define MAX_CALLBACKS   32
 
#define LOG_USE_COLOR
 
#define log_trace(...)   log_log(LOG_TRACE, __FILE__, __LINE__, __VA_ARGS__)
 
#define log_debug(...)   log_log(LOG_DEBUG, __FILE__, __LINE__, __VA_ARGS__)
 
#define log_info(...)   log_log(LOG_INFO, __FILE__, __LINE__, __VA_ARGS__)
 
#define log_warn(...)   log_log(LOG_WARN, __FILE__, __LINE__, __VA_ARGS__)
 
#define log_error(...)   log_log(LOG_ERROR, __FILE__, __LINE__, __VA_ARGS__)
 
#define log_fatal(...)
 
#define log_assert(condition, ...)
 

类型定义

typedef void(* log_LogFn) (log_Event *ev)
 日志回调函数
 
typedef void(* log_LockFn) (bool lock, void *udata)
 日志锁回调函数
 

枚举

enum  log_Level {
  LOG_TRACE , LOG_DEBUG , LOG_INFO , LOG_WARN ,
  LOG_ERROR , LOG_FATAL , LOG_ASSERT_1 , LOG_ASSERT_0
}
 日志级别枚举类 更多...
 

函数

static const char * filename_from_path (const char *path)
 获得文件路径内的文件名
 
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 log_log (int level, const char *file, int line, const char *fmt,...)
 日志输出
 

变量

struct { 
 
   void *   udata 
 
   log_LockFn   lock 
 
   int   level 
 
   bool   quiet 
 
   Callback   callbacks [MAX_CALLBACKS
 
L 
 日志库全局变量结构体
 

详细描述

日志库头文件

作者
lancer (lance.nosp@m.rsta.nosp@m.dium@.nosp@m.163..nosp@m.com)
版本
0.1.0
日期
2023-12-25
注解
参考项目:Github | log.c

宏定义说明

◆ log_assert

#define log_assert ( condition,
... )
值:
do { \
if (!(condition)) { \
log_log(LOG_ASSERT_0, __FILE__, __LINE__, _red(#condition) " " __VA_ARGS__); \
exit(1); \
} else { \
log_log(LOG_ASSERT_1, __FILE__, __LINE__, _green(#condition) " " __VA_ARGS__); \
} \
} while(0)
@ LOG_ASSERT_0
Definition log.h:85
@ LOG_ASSERT_1
Definition log.h:84

日志断言级别输出

◆ log_debug

#define log_debug ( ...)    log_log(LOG_DEBUG, __FILE__, __LINE__, __VA_ARGS__)

日志调试级别输出

◆ log_error

#define log_error ( ...)    log_log(LOG_ERROR, __FILE__, __LINE__, __VA_ARGS__)

日志错误级别输出

◆ log_fatal

#define log_fatal ( ...)
值:
do { \
log_log(LOG_FATAL, __FILE__, __LINE__, __VA_ARGS__); \
exit(1); \
} while(0)
@ LOG_FATAL
Definition log.h:83

日志致命级别输出

◆ log_info

#define log_info ( ...)    log_log(LOG_INFO, __FILE__, __LINE__, __VA_ARGS__)

日志信息级别输出

◆ log_trace

#define log_trace ( ...)    log_log(LOG_TRACE, __FILE__, __LINE__, __VA_ARGS__)

日志跟踪级别输出

◆ LOG_VERSION

#define LOG_VERSION   "0.1.0"

日志库版本 最大回调函数数量

◆ log_warn

#define log_warn ( ...)    log_log(LOG_WARN, __FILE__, __LINE__, __VA_ARGS__)

日志警告级别输出

◆ MAX_CALLBACKS

#define MAX_CALLBACKS   32

开启日志颜色

枚举类型说明

◆ log_Level

enum log_Level

日志级别枚举类

枚举值
LOG_DEBUG 

跟踪级别

LOG_INFO 

调试级别

LOG_WARN 

信息级别

LOG_ERROR 

警告级别

LOG_FATAL 

错误级别

LOG_ASSERT_1 

致命级别

LOG_ASSERT_0 

断言级别

函数说明

◆ filename_from_path()

static const char * filename_from_path ( const char * path)
inlinestatic

获得文件路径内的文件名

参数
path文件路径
返回
const char* 文件名

◆ log_add_callback()

int log_add_callback ( log_LogFn fn,
void * udata,
int level )

添加日志回调

参数
fn日志锁回调函数,参考 log_LockFn
udata用户数据
level日志级别枚举类型,参考 log_Level
返回
int 是否成功添加日志文件
返回值
`0`成功 -1 失败

◆ log_add_fp()

int log_add_fp ( FILE * fp,
int level )

添加日志文件和级别

参数
fp文件指针
level日志级别枚举类型,参考 log_Level
返回
int 是否成功添加日志文件
返回值
`0`成功 -1 失败
注解
内部实现参考 log_add_callback

◆ log_level_string()

const char * log_level_string ( int level)

获取日志级别的字符串

参数
level日志级别枚举类型,参考 log_Level
返回
const char* 日志级别对应的字符串指针

◆ log_log()

void log_log ( int level,
const char * file,
int line,
const char * fmt,
... )

日志输出

参数
level日志级别枚举类型,参考 log_Level
file文件名
line文件行号
fmt格式化字符串
...其他参数

◆ log_set_level()

void log_set_level ( int level)

设置日志级别

参数
level日志级别枚举类型,参考 log_Level

◆ log_set_lock()

void log_set_lock ( log_LockFn fn,
void * udata )

设置日志锁

参数
fn日志锁回调函数,参考 log_LockFn
udata用户数据

◆ log_set_quiet()

void log_set_quiet ( bool enable)

设置日志是否静默

参数
enable布尔值:true 为静默,false 为不静默
注解
将日志库全局变量 L 中的 quiet 字段设置为 enable
  1. 对于同一段日志输出函数 log_info
    // 不设置静默模式
    log_info("hello");
    void log_set_quiet(bool enable)
    设置日志是否静默
    Definition log.c:106
    #define log_info(...)
    Definition log.h:133
    控制台输出:
    12:48:17 INFO src/main.c:26: Hello world!
    int main(int argc, char *argv[], char *envp[])
    主函数
    Definition cemu.c:30
  2. 若设置静默模式,日志不会输出到控制台:
    // 设置静默模式
    log_info("hello");

变量说明

◆ callbacks

Callback callbacks[MAX_CALLBACKS]

是否静默

◆ [struct]

struct { ... } L

日志库全局变量结构体

参数
L日志库全局变量

◆ level

int level

锁函数

◆ lock

log_LockFn lock ( void )

用户数据

◆ quiet

bool quiet

日志级别