RaspberrPi project source code
Guo Wenxue
2023-09-08 47098ac0fb3a6bed9bd5c2acfc64d84387302cda
commit | author | age
d6b4a7 1 /*********************************************************************************
G 2  *      Copyright:  (C) 2023 LingYun IoT System Studio.
3  *                  All rights reserved.
4  *
5  *       Filename:  logger.h
6  *    Description:  This file is common logger API functions
7  *                 
8  *        Version:  1.0.0(11/08/23)
9  *         Author:  Guo Wenxue <guowenxue@gmail.com>
10  *      ChangeLog:  1, Release initial version on "11/08/23 16:18:43"
11  *                 
12  ********************************************************************************/
13
14 #ifndef  _LOGGER_H_
15 #define  _LOGGER_H_
16
17 #include <stdio.h>
18 #include <stdarg.h>
19
20 #define LOG_VERSION "v0.1"
21
22 /* log level */
23 enum {
24     LOG_LEVEL_ERROR,
25     LOG_LEVEL_WARN,
26     LOG_LEVEL_INFO,
27     LOG_LEVEL_DEBUG,
28     LOG_LEVEL_TRACE,
29     LOG_LEVEL_MAX
30 };
31
32 enum {
33     LOG_LOCK_DISABLE, /* disable lock */
34     LOG_LOCK_ENABLE,  /* enable lock */
35 };
36
37 #define ROLLBACK_NONE   0
38
39 /* description: Initial the logger system
40  * arguments  :
41  *             $fname: logger file name, NULL/"console"/"stderr" will log to console
42  *             $level: logger level above;
43  *             $size : logger file max size in KiB
44  *             $lock : thread lock enable or not
45  * return     : <0: Failed  ==0: Sucessfully
46  */
47 int log_open(char *fname, int level, int size, int lock);
48
49
50 /* description: Terminate the logger system */
51 void log_close(void);
52
53
54 /* description: log message into log file. Don't call this function directly. */
55 void _log_write(int level, const char *file, int line, const char *fmt, ...);
56
57
58 /* description: dump a buffer in hex to logger file */
59 void log_dump(int level, const char *prompt, char *buf, size_t len);
60
61 /* function: log message into logger file with different log level */
62 #define log_trace(...) _log_write(LOG_LEVEL_TRACE, __FILE__, __LINE__, __VA_ARGS__)
63 #define log_debug(...) _log_write(LOG_LEVEL_DEBUG, __FILE__, __LINE__, __VA_ARGS__)
64 #define log_info(...)  _log_write(LOG_LEVEL_INFO,  __FILE__, __LINE__, __VA_ARGS__)
65 #define log_warn(...)  _log_write(LOG_LEVEL_WARN,  __FILE__, __LINE__, __VA_ARGS__)
66 #define log_error(...) _log_write(LOG_LEVEL_ERROR, __FILE__, __LINE__, __VA_ARGS__)
67
68 #endif