log日志
在程序调试时log日志至关重要,笔者实现了一套linux log机制,主要功能如下
- 日志等级区分:error,warn,info,debug 及对应显示开关(宏)
- 终端色彩显示:不同等级log不同色彩打印
- 支持简洁版和more msg多信息模式切换(宏):文件、函数、行号、开机时长(单位ms)
,系统时间(精确到ms)
linux彩色终端
- 使用ANSI控制码可设置linux终端输出信息的色彩,除字体颜色还有高亮,背景,下划线,闪烁,光标位置,清屏等配置,可根据自己喜好查询对应控制码进行设置(这里只设置了颜色)。
#define ANSI_BLACK "30m" /* Black */
#define ANSI_RED "31m" /* Red */
#define ANSI_GREEN "32m" /* Green */
#define ANSI_YELLOW "33m" /* Yellow */
#define ANSI_BLUE "34m" /* Blue */
#define ANSI_MAGENTA "35m" /* Magenta */
#define ANSI_CYAN "36m" /* Cyan */
#define ANSI_WHITE "37m" /* White */
#define ANSI_START "\033["
#define ANSI_RESET "\033[0m"
#define COLOR_INFO ANSI_GREEN
#define COLOR_DEBUG ANSI_BLUE
#define COLOR_WARN ANSI_YELLOW
#define COLOR_ERROR ANSI_RED
先看效果:
//demo:
void linux_log_demo(void)
{
LOG_ERROR("This is %s : 0x%.4x ", "LOG_ERRTR",0x00FF);
LOG_WARN("This is %s ","LOG_WARN!");
LOG_INFO("This is %s ","LOG_INFO");
LOG_DEBUG("This is %s ","LOG_DEBUG!");
while(1)
{
LOG_INFO("This is %s ","LOG_INFO");
LOG_DEBUG("This is %s ","LOG_DEBUG!");
//usleep(100000);
sleep(1);
}
}
- 简洁模式效果
等级开关
/* level switch */
#define LOG_ERROR_ENABLE 1
#if LOG_ERROR_ENABLE
#define LOG_WARN_ENABLE 1
#if LOG_WARN_ENABLE
#define LOG_INFO_ENABLE 0
#if LOG_INFO_ENABLE
#define LOG_DEBUG_ENABLE 1
#endif
#endif
#endif
- 等级由高到低分别是 error warn info debug,高级别关闭,比其低级别自动关闭。
比如此配置关闭 info后只剩下比其高的error 和 warn 的log, 等级控制效果:
更多信息模式
- 可宏控制是否显示更多信息(文件、函数、行号、开机时长(ms))
- 也可宏控制更多信息下是否打印日期(精确到ms)
#define LOG_MORE_MSG_ENABLE 1 /* more mesage .such as file,fun,line,time */
#define LOG_SHOW_DATE_ENABLE 0 /* date in more mesage */
- more msg 效果
- more msg + date效果
源码:github 地址
https://github.com/AntigravityC/linux_log
喜欢的点个星星吧(抱拳:)