log4cpp 用法

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

1 windows环境

1.1创建一个日志模板

         staticbool bFirst = true;

         Logger_logger = Logger::getInstance(LOG4CPLUS_TEXT("thriftserver"));

         if(bFirst)

         {

                   SharedAppenderPtr_append(new RollingFileAppender(LOG4CPLUS_TEXT("thriftserver.log"),300 * 1024, 20));

                   auto_ptr<Layout>pPatternLayout(new PatternLayout("%D- %m [%l]%n"));

                   _append->setLayout(pPatternLayout);

                   _append->setName(LOG4CPLUS_TEXT("thriftserver"));

                   _logger.addAppender(_append);

                   bFirst= false;

         }

        return _logger;

 

1.2 日志携带时间戳

auto_ptr<Layout> pPatternLayout(newPatternLayout("%d- %m [%l]%n"));

显示的是格林威治的时间

auto_ptr<Layout> pPatternLayout(newPatternLayout("%D- %m [%l]%n"));

显示的是本地的时间

 

1.3 使用例子

#include <log4cplus/loggingmacros.h>

#include <log4cplus/logger.h>

#include <log4cplus/fileappender.h>

 

#define LOGGERTAGLogger::getInstance(LOG4CPLUS_TEXT("thriftserver"))

 

log4cplus::LoggerStartSetupThrfitServerLog();

//在程序运行的时候创建日志文件,调用该函数

log4cplus::Logger StartSetupThrfitServerLog()

{

         staticbool bFirst = true;

         Logger_logger = Logger::getInstance(LOG4CPLUS_TEXT("thriftserver"));

         if(bFirst)

         {

                   SharedAppenderPtr_append(new RollingFileAppender(LOG4CPLUS_TEXT("thriftserver.log"),300 * 1024, 20));

                   auto_ptr<Layout>pPatternLayout(new PatternLayout("%D- %m [%l]%n"));

                   _append->setLayout(pPatternLayout);

                   _append->setName(LOG4CPLUS_TEXT("thriftserver"));

                   _logger.addAppender(_append);

                   bFirst= false;

         }

        return _logger;

}

 

//写日志

LOG4CPLUS_ERROR(LOGGERTAG, "can notconnect remote host,ip:”<< ip);

 

 

2 Linux环境

log4cpp编译安装的路径是/opt/log4cpp

 

问题:如何正确引入动态库

1.修改/etc/ld.so.conf文件,将/opt/log4cpp/lib添加到文件末尾,该文件主要被ldconfig指令用来搜索可共享的动态链接库

2.执行ldconfig,根据修改的文件内容,创建出动态装入程序所需的连接和缓存文件,提供给系统动态库调用

手动:

   g++ test.cpp -I/opt/log4cpp/include -L/opt/log4cpp/lib/ -llog4cpp-lpthread -o test

 

提示

test.cpp文件并没有依赖多线程库,但是log4cpp库依赖,所以必须在命令中指定,并且由于库的依赖次序:前面的库依赖后面的库,所以在log4cpp后面添加lpthread库。如果不知道需要添加哪些库依赖,可以参考/opt/log4cpp/bin/log4cp-config文件--libs --cflags输出,如下提供了如何在编译指令中添加log4cp-config

例子:

g++ test.cpp`/opt/log4cpp/bin/log4cpp-config --libs --cflags` -o maintest

 




     本文转自fengyuzaitu 51CTO博客,原文链接:http://blog.51cto.com/fengyuzaitu/1978732,如需转载请自行联系原作者



相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
6月前
|
人工智能 数据可视化 开发工具
Git log 进阶用法(含格式化、以及数据过滤)
Git log 进阶用法(含格式化、以及数据过滤)
|
3月前
|
数据采集 监控 数据安全/隐私保护
掌握Selenium爬虫的日志管理:调整–log-level选项的用法
在Selenium Web数据采集时,日志管理至关重要。通过调整`–log-level`参数可优化日志详细度,如设置为`INFO`记录一般操作信息。结合代理IP、Cookie及user-agent配置,不仅能提高采集成功率,还能规避反爬机制。合理选择日志级别有助于调试与性能平衡,在复杂的数据采集任务中保持程序稳定与可控。
121 1
掌握Selenium爬虫的日志管理:调整–log-level选项的用法
|
5月前
|
机器学习/深度学习 JavaScript 前端开发
你不知道的console.log用法
在JavaScript中,使用`console.log()`时,通过大括号能显示变量名和值。`console.table(data, columns)`用于格式化打印表格。常用方法包括:`console.log()`
51 0
|
监控 Java 数据安全/隐私保护
Spring Boot 高级用法 AOP 自定义注解实现日志
Spring Boot 高级用法 AOP 自定义注解实现日志
139 0
控制台输出信息console.log()的用法总结
控制台输出信息console.log()的用法总结
201 0
|
Docker 容器
Docker基础:docker查看日志用法笔记
大家在平常使用docker的时候,可能会遇到这样或者那样的问题,这个时候想排查问题的时候通常需要查看异常日志,这样才可以快速定位问题,从而解决实际的问题。今天就给大家聊聊Docker查看日志的用法,一起来看看吧!
Docker基础:docker查看日志用法笔记
|
索引 Python
Python语言学习之字母L开头函数使用集锦:logging日志用法之详细攻略
Python语言学习之字母L开头函数使用集锦:logging日志用法之详细攻略
|
监控 JavaScript 数据库
morgan nodejs日志组件两种用法
记录请求参数和请求内容 默认morgan没有提供记录请求参数和请求内容的方法, 但是他提供了扩展方法,如下: morgan.token('requestParameters', function(req, res){ return JSON.
1501 0
|
机器学习/深度学习 数据格式 XML