log4cplus使用-自定义日志等级

Posted 朝十晚八

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了log4cplus使用-自定义日志等级相关的知识,希望对你有一定的参考价值。

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源代码后生成库文件,再使用时即可实现满意效果。如图

技术分享图  自定义日志等级

参考文章
log4cplus库(四)(优先级与日志配置)

以上是关于log4cplus使用-自定义日志等级的主要内容,如果未能解决你的问题,请参考以下文章

配置 log4cplus 以在运行时记录到自定义文件

前端日志监控插件

laravel自定义日志文件名自定义目录

laravel自定义日志文件名自定义目录

springboot自定义注解收集操作日志

springboot自定义注解收集操作日志