66 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
 | |
| #ifndef __LOGGING_H
 | |
| #define __LOGGING_H
 | |
| 
 | |
| #include <stdio.h>
 | |
| #include <stdlib.h>
 | |
| #include <stdarg.h>
 | |
| #include <string.h>
 | |
| #include <time.h>
 | |
| #include <stdbool.h>
 | |
| 
 | |
| typedef enum {
 | |
|     LOG_FATAL,
 | |
|     LOG_ERROR,
 | |
|     LOG_WARNING,
 | |
|     LOG_INFO,
 | |
|     LOG_DEBUG,
 | |
| } log_level;
 | |
| 
 | |
| typedef enum {
 | |
|     L_ERROR,
 | |
|     L_OK,
 | |
| } log_status;
 | |
| 
 | |
| typedef struct Handler {
 | |
|     void* out;
 | |
|     bool apply_color;
 | |
| } log_Handler;
 | |
| 
 | |
| 
 | |
| //日志操作器
 | |
| typedef struct Logger
 | |
| {
 | |
|     log_level level;
 | |
|     log_Handler* handler;
 | |
|     const char* name;
 | |
|     void (*fatal)(const char* format, ...);
 | |
|     void (*error)(const char* format, ...);
 | |
|     void (*warning)(const char* format, ...);
 | |
|     void (*info)(const char* format, ...);
 | |
|     void (*debug)(const char* format, ...);
 | |
| 
 | |
|     void (*addHandler)(log_Handler* handler);
 | |
|     // void (*addFormat)(const char* format);
 | |
|     // void (*addFilter)(const char* filter);
 | |
| } Logger;
 | |
| 
 | |
| 
 | |
| //日志类对象
 | |
| typedef struct Logging {
 | |
|     Logger* (*getLogger)(const char* name, log_level level);
 | |
|     log_status (*setLevel)(Logger* logger, log_level level);
 | |
| } Logging;
 | |
| 
 | |
| 
 | |
| 
 | |
| Logging* createLogging();                        //创建日志操作器
 | |
| log_status destroyLogging(Logging* logging);
 | |
| Logger* getCurrentLogger(void);
 | |
| 
 | |
| 
 | |
| log_Handler* fileHandler(const char* name);     //文件处理器
 | |
| log_Handler* consoleHandler(const char* name); //控制台处理器
 | |
| 
 | |
| 
 | |
| #endif // __LOGGING_H
 |