温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

log4cplus 日志库使用

发布时间:2020-06-01 06:26:04 来源:网络 阅读:1850 作者:fengyuzaitu 栏目:软件技术

1 windows环境

1.1创建一个日志模板

 当前使用的版本 log4cplus-1.2.1-rc2

        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"));

显示的是本地的时间

auto_ptr<Layout> pPatternLayout(new PatternLayout("%D{%Y-%m-%d %H:%M:%S.%q}- %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



修订 

2019/8/23 日志精确显示毫秒

 


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI