博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
log4cplus使用(二)-自定义日志等级
阅读量:6209 次
发布时间:2019-06-21

本文共 847 字,大约阅读时间需要 2 分钟。

log4cplus支持用户自定义日志等级,操作也比较简单,使用之前贴如下宏定义

#define LOG4CPLUS_MACRO_CREASH_LOG_LEVEL(pred) LOG4CPLUS_UNLIKELY(pred)

namespace log4cplus

{
 const LogLevel CREASH_LOG_LEVEL = 55000;
}

#define LOG4CPLUS_CREASH(logger, logEvent) LOG4CPLUS_MACRO_BODY(logger, logEvent, CREASH_LOG_LEVEL)

不过log4cplus没有提供给用户一个接口来实现LEVEL值与字符串的转换,所以当带格式
输出LogLevel字符串时候会显示"UNKNOWN", 不够理想。比如用TTCCLayout控制输出的结果可能会如下所示:
10-17-04 11:17:51,124 [1075298944] UNKNOWN root <> - info
而不是期望的以下结果:
10-17-04 11:17:51,124 [1075298944] HELLO root <> - info

要想实现第二种结果,按照log4cplus现有的接口机制,只能改其源代码后重新编译,方法是在loglevel.cxx中加入:

#define _HELLO_STRING LOG4CPLUS_TEXT("HELLO")
然后修改log4cplus::tstring  defaultLogLevelToStringMethod(LogLevel ll)函数,增加一个判断:
case HELLO_LOG_LEVEL:   
  return _HELLO_STRING;

重新编译log4cplus源代码后生成库文件,再使用时即可实现满意效果。如图

图  自定义日志等级

参考文章

转载于:https://www.cnblogs.com/swarmbees/p/5621616.html

你可能感兴趣的文章
PL/SQL实现JAVA中的split()方法的小例子
查看>>
SOFARPC源码解析-搭建环境
查看>>
FreeBSd ports 安装软件
查看>>
Fast inverse square root
查看>>
FAQ: SBS 2011. The Windows SBS Manager service terminated unexpectedly
查看>>
判断一个坐标点是否在不规则多边形内部的算法
查看>>
jquery的checkbox,radio,select等方法总结
查看>>
不用Connectify,让win7分WiFi玩手机!
查看>>
[转]设置好ftp后用xftp连接提示无法打开,无法显示远程文件夹
查看>>
DIR - matlab函数
查看>>
Qt笔记-QAxContainer
查看>>
[Qt初级] 解决 中QMainWindow和QDockWidget添加布局失败问题
查看>>
设计模式:迭代器模式(Iterator Pattern)
查看>>
jQuery
查看>>
linux下date的陷阱
查看>>
递归实现快速幂(C++版)
查看>>
Global.asax
查看>>
谈面试中的亮点
查看>>
剑指Offer-第3章 高质量代码
查看>>
Python-RabbitMQ-RPC(非阻塞版)
查看>>