zlog日志库的简单封装,以及给debug级别添加颜色显示
现看看效果如何:
方法如下:
定义相关颜色的宏
#define ESC_START "\033["
#define ESC_END "\033[0m"
#define COLOR_FATAL "31;40;5m"
#define COLOR_ALERT "31;40;1m"
#define COLOR_CRIT "31;40;1m"
#define COLOR_ERROR "35;40;1m"
#define COLOR_WARN "33;40;1m"
#define COLOR_NOTICE "34;40;1m"
#define COLOR_INFO "32;40;1m"
#define COLOR_DEBUG "36;40;1m"
#define COLOR_TRACE "37;40;1m"
封装 zlog函数
extern zlog_category_t * log_category;
extern int log_init();
extern void log_fini();
#define LOG_FATAL(fmt,args...) \
zlog(log_category, __FILE__, sizeof(__FILE__)-, \
__func__, sizeof(__func__)-, __LINE__, \
ZLOG_LEVEL_FATAL, ESC_START COLOR_FATAL fmt ESC_END, ##args) #define LOG_ERROR(fmt , args...) \
zlog(log_category, __FILE__, sizeof(__FILE__)-, \
__func__, sizeof(__func__)-, __LINE__, \
ZLOG_LEVEL_ERROR, ESC_START COLOR_ERROR fmt ESC_END, ##args) #define LOG_WARN(fmt, args...) \
zlog(log_category, __FILE__, sizeof(__FILE__)-, \
__func__, sizeof(__func__)-, __LINE__, \
ZLOG_LEVEL_WARN, ESC_START COLOR_WARN fmt ESC_END, ##args) #define LOG_NOTICE(fmt , args...) \
zlog(log_category, __FILE__, sizeof(__FILE__)-, \
__func__, sizeof(__func__)-, __LINE__, \
ZLOG_LEVEL_NOTICE, ESC_START COLOR_NOTICE fmt ESC_END, ##args) #define LOG_INFO(fmt,args...) \
zlog(log_category, __FILE__, sizeof(__FILE__)-, \
__func__, sizeof(__func__)-, __LINE__, \
ZLOG_LEVEL_INFO, ESC_START COLOR_INFO fmt ESC_END, ##args) #define LOG_DEBUG(fmt , args...) \
zlog(log_category, __FILE__, sizeof(__FILE__)-, \
__func__, sizeof(__func__)-, __LINE__, \
ZLOG_LEVEL_DEBUG, ESC_START COLOR_DEBUG fmt ESC_END, ##args)
封装 zlog_init,zlog_get_category,zlog_fini
zlog_category_t * log_category = NULL; int log_init() {
//初始化.配置文件名是固定的log.conf
if (zlog_init("log.conf")) {
printf("Error: zlog_init\n");
zlog_fini();
return -;
}
//找到分类,在配置文件中的category
log_category = zlog_get_category("my_cat");
if (!log_category) {
printf("Error: get cat fail\n");
zlog_fini();
return -;
}
return ;
} void log_fini() {
zlog_fini();
}
zlog日志库的简单封装,以及给debug级别添加颜色显示的更多相关文章
- Sword zlog日志库使用
配置文件*.conf 配置文件具体内容如下: [global] #改变量可以不写,默认是true,如果使用设置为true时,Zlog就会严格检查所用格式和规则,否则,忽略所用格式和规则. strict ...
- 自行实现的jar包中,日志库的适配实现
日常情况下,我们自己都会自行实现一些基础的jar包,如dao包.service包或一些其他完成特定功能的jar包.如果没有一套调试日志信息,出现问题时想查找问题非常不方便.可能大多数小伙伴都会有自 ...
- c++ 高性能日志库(muduo_AsyncLogging)
c++ 高性能日志库(muduo_AsyncLogging) 实现一个高效的网络日志库要解决那些问题? 首先明确一下问题的模型,这是一个典型的多生产者 单消费者问题,对于前端的日志库使用者来说,应该做 ...
- zlog 纯C日志函数库的简单使用方法
zlog简述: log是一个高性能.线程安全.灵活.概念清晰的纯C日志函数库. 事实上,在C的世界里面没有特别好的日志函数库(就像JAVA里面的的log4j,或者C++的log4cxx).C程序员都喜 ...
- GO的日志库log竟然这么简单!
前言 最近在尝试阅读字节开源RPC框架Kitex的源码,看到日志库klog部分,果不其然在Go原生的log库的基础上增加了自己的设计,大体包括增加了一些格式化的输出.增加一些常用的日志级别等. 一番了 ...
- Google图片加载库Glide的简单封装GlideUtils
Google图片加载库Glide的简单封装GlideUtils 因为项目里用的Glide的地方比较多,所有简单的封装了以下,其实也没什么,就是写了个工具类,但是还是要把基础说下 Glide的Githu ...
- easylog -- Linux 下的简单日志库
之前使用 log4c 或者 log4cpp 的时候, 总需要配置一些文件和链接库之类复杂的配置. 虽然越复杂越说明这个软件支持的功能多.可选择性强, 但是对于一个小的项目,或者要研究他人的代码而加点儿 ...
- Linux共享库 zlog日志
[ global] strict init = false buffer min = buffer max = 2MB rotate lock file= /tmp/zlog.lock [format ...
- GitHub 上排名前 100 的 Android 开源库进行简单的介绍
若有任何疑问可通过邮件或微博联系我 项目名称 项目简介 1. react-native 这个是 Facebook 在 React.js Conf 2015 大会上推出的基于 JavaScript 的开 ...
随机推荐
- Git使用笔记01
本文基本的參考文章链接例如以下所看到的: Pro Git(中文版) Git教程 Git使用教程 简单介绍与说明 Git是一个分布式版本号管理系统,是为了更好地管理Linux内核开发而创立的.Git能够 ...
- vue class绑定 组件
当在一个自定义组件上使用 class 属性时,这些类将被添加到该组件的根元素上面.这个元素上已经存在的类不会被覆盖. 例如,如果你声明了这个组件: Vue.component('my-componen ...
- Food hub
Work center List Tillage 耕作 Hand harvest 手工采收 Planting 种植 Cultivating 培养 Mulching 覆盖 Dig harvest 挖地采 ...
- Linux C高级编程——网络编程基础(1)
Linux高级编程--BSD socket的网络编程 宗旨:技术的学习是有限的,分享的精神是无限的. 一网络通信基础 TCP/IP协议簇基础:之所以称TCP/IP是一个协议簇,是由于TCP/IP包括T ...
- Mysql导出大量数据
outfile 导出文件 select name from t1 into outfile "/tmp/test.txt" infile 导入文件 导入到表t1中的name ...
- [Codevs 1230]元素查找(手写哈希表)
题目连接:http://codevs.cn/problem/1230/ 说白了就是要我们自己手写一个哈希表的数据结构来实现加入和查找功能.map也能直接过(我第一次写就是用map骗AC的) 提一下个人 ...
- iOS_12_tableViewCell的删除更新_红楼梦
终于效果图: Girl.h // // Girl.h // 12_tableView的增删改 // // Created by beyond on 14-7-27. // Copyright (c) ...
- cocos2d0基础篇笔记二
1.菜单的使用: CCMenuItemimage*image=CCMenuItemImage*create("xxx.png", "xxx,png", &quo ...
- mysql判断是否等于某个值
需要在其后面加.toString()方法,其中 flag为字符串类型
- 物联网网络编程和web编程
本文是基于嵌入式物联网研发project师的视觉对网络编程和web编程进行阐述. 对于专注J2EE后端服务开发的同学来说,这篇文章可能略微简单.可是网络编程和web编程对于绝大部分嵌入式物联网proj ...