ubuntu下安装与使用Log4cpp

1、下载版本:log4cpp-1.1rc3.tar.gz,  该版本中没有1.0版本的那些bug,不需修改,下载地址:http://sourceforge.net/projects/log4cpp/

2、解压下载的压缩文件:log4cpp-1.1rc3.tar.gz,可以使用命令行,或者右键压缩包,在弹出菜单项中选择“解压至此处”

3、解压后的文件夹名为log4cpp,在终端(快捷键ctrl+alt+t)中,cd到该文件夹下,注意需要root权限。

4、运行configure
#./configure --with-pthreads

5、在终端中依次输入如下命令,即可完成安装,安装完成后,log4cpp so库在/usr/local/lib下,头文件在/usr/local/include目录下

#./configure
#make
#make install

6、添加环境变量
#gedit /etc/profile.d/log4cpp.sh
在文件中添加如下文字(注意不要少了冒号):
LD_LIBRARY_PATH=:$LD_LIBRARY_PATH:/usr/local/lib
export LD_LIBRARY_PATH

7、保存好文件后,修改该文件可执行权限,在终端中输入的命令如下:
#chmod a+x /etc/profile.d/log4cpp.sh

8、使用命令ldconfig -v后上述配置方可生效,在终端(ctrl+alt+t)中直接输入ldconfig -v,注意需要root权限(在终端中输入sudo su,然后回车输入密码),
desktop:/usr/local/lib# ldconfig -v
否则在程序运行后会出现如下找不到动态库的问题:
./test_main: error while loading shared libraries: liblog4cpp.so.5: cannot open shared object file: No such file or directory

9、编译程序的指令为:
g++ test_main.cpp -o test_main -llog4cpp -lpthread
其中:test_main.cpp为上述源文件,test_main为目标文件,-llog4cpp告诉编译器使用了log4cpp的so库,如果刚才 log4cpp安装时使用默认路径,则该动态库在/user/local/lib下,文件名为liblog4cpp.so,-lpthread告诉编译器 在liblog4cpp中使用了线程。

10、不使用配置文件的测试代码(下面的代码摘自网络):

//test_main.cpp
#include <log4cpp/Category.hh>
#include <log4cpp/FileAppender.hh>
#include <log4cpp/BasicLayout.hh>
#include <log4cpp/BasicLayout.hh>int main()
{log4cpp::Layout* layout =  new log4cpp::BasicLayout();// 2. 初始化一个appender 对象log4cpp::Appender* appender = new log4cpp::FileAppender("FileAppender","./test_log4cpp1.log");// 3. 把layout对象附着在appender对象上appender->setLayout(layout);// 4. 实例化一个category对象log4cpp::Category& warn_log = log4cpp::Category::getInstance("mywarn");// 5. 设置additivity为false,替换已有的appenderwarn_log.setAdditivity(false);// 5. 把appender对象附到category上warn_log.setAppender(appender);// 6. 设置category的优先级,低于此优先级的日志不被记录warn_log.setPriority(log4cpp::Priority::WARN);// 记录一些日志warn_log.info("Program info which cannot be wirten");warn_log.debug("This debug message will fail to write");warn_log.alert("Alert info");// 其他记录日志方式warn_log.log(log4cpp::Priority::WARN, "This will be a logged warning");log4cpp::Priority::PriorityLevel priority;bool this_is_critical = true;if(this_is_critical)priority = log4cpp::Priority::CRIT;elsepriority = log4cpp::Priority::DEBUG;warn_log.log(priority,"Importance depends on context");warn_log.critStream() << "This will show up << as " << 1 << " critical message"<< log4cpp::Priority::ERROR;// clean up and flush all appenderslog4cpp::Category::shutdown();return 0;
}

11、使用配置文件,

(1)配置文件log4cpp.conf内容如下(摘自http://www.ibm.com/developerworks/cn/linux/l-log4cpp/index.html):
############################## log4cpp.conf ########################################################
# a simple test config
#定义了3个category sub1, sub2, sub1.sub2
log4j.rootCategory=DEBUG, rootAppender
log4j.category.sub1=,A1
log4j.category.sub2=INFO
log4j.category.sub1.sub2=ERROR, A2
# 设置sub1.sub2 的additivity属性
log4j.additivity.sub1.sub2=false
#定义rootAppender类型和layout属性
log4j.appender.rootAppender=org.apache.log4j.ConsoleAppender
log4j.appender.rootAppender.layout=org.apache.log4j.BasicLayout
#定义A1的属性
log4j.appender.A1=org.apache.log4j.FileAppender
log4j.appender.A1.fileName=A1.log
log4j.appender.A1.layout=org.apache.log4j.SimpleLayout
#定义A2的属性
log4j.appender.A2=org.apache.log4j.ConsoleAppender
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=The message '%m' at time %d%n
##################################################################################################
(2)测试代码如下:
###############################test_usecfg.cpp#######################################################

#include <log4cpp/PropertyConfigurator.hh>
#include <log4cpp/Category.hh>
int main() {// 1 读取解析配置文件// 读取出错, 完全可以忽略,可以定义一个缺省策略或者使用系统缺省策略// BasicLayout输出所有优先级日志到ConsoleAppendertry{log4cpp::PropertyConfigurator::configure("./log4cpp.conf");}catch (log4cpp::ConfigureFailure& f){std::cout << "Configure Problem: " << f.what() << std::endl;return -1;}//2    实例化category对象//    这些对象即使配置文件没有定义也可以使用,不过其属性继承其父category//    通常使用引用可能不太方便,可以使用指针,以后做指针使用log4cpp::Category& root = log4cpp::Category::getRoot();log4cpp::Category& sub1 = log4cpp::Category::getInstance(std::string("sub1"));log4cpp::Category& sub2 = log4cpp::Category::getInstance(std::string("sub2"));log4cpp::Category& sub3 = log4cpp::Category::getInstance(std::string("sub3"));log4cpp::Category& sub4 = log4cpp::Category::getInstance(std::string("sub4"));//    正常使用这些category对象进行日志处理。root.fatal("root's log");//    sub1 has appender A1 and rootappender. since the additivity property is set true by defaultsub1.info("sub1's log");//    sub2 has appender A2 appender. since the additivity property is set to falsesub2.alert("sub2's log");//    sub3 only has A3 appender. since the additivity property is set to falsesub3.debug("sub3's log");sub3.alert("sub3's log");//    sub4 can not be found in the config file, so the root category's appender and layout are usedsub4.warn("sub4's log");return 0;
}

ubuntu下安装与使用Log4cpp相关推荐

  1. Ubuntu 下安装thttpd Web服务器

    不知道大家是不是真的需要用appache这么复杂的功能这么强大的web server,其实有很多时候使用webserver也只是一种远程共享访问的方式.这里,Ubuntu repository的提供了 ...

  2. Ubuntu下安装Apache+PHP+Mysql

    Ubuntu下安装 apache+php+mysql文本服务器! ------------------------------------------------------------------- ...

  3. ubuntu下安装ftp服务器

    ubuntu下安装ftp服务器 Ftp服务器是使用以vsftp为例. 1. 安装     $sudo aptitude install vsftpd     $ps aux | grep 'ftp' ...

  4. linux pureftp mysql_在Ubuntu下安装apache2+php5+mysql5+pureftp+ftp

    在Ubuntu下安装apache2+php5+mysql5+pureftp+ftp 一.安装Ubuntu7.04 Desktop版 二.ubuntu Linux下手工安装mysql5 1.下载mysq ...

  5. ubuntu下安装windows虚拟机

    ubuntu下安装win7虚拟机总结 ubuntu16.04 虚拟机 安装win7/win10 http://WIN10:你不能访问此共享文件夹,解决方法 VirtualBox虚拟机剪贴板共享

  6. Linux :debian(ubuntu)下安装和使用haskell

    文章目录 Linux :debian(ubuntu)下安装haskell 安装 使用 Linux :debian(ubuntu)下安装haskell 安装 直接使用apt进行安装: sudo apt- ...

  7. Linux: debian/ubuntu下安装和使用Java 11

    Linux: debian/ubuntu下安装和使用Java 11 只需6行命令: su - echo "deb http://ppa.launchpad.net/linuxuprising ...

  8. Linux: debian/ubuntu下安装和使用Java 8

    Linux: debian/ubuntu下安装和使用Java 8 7行命令解决问题: su - echo "deb http://ppa.launchpad.net/webupd8team/ ...

  9. Linux: debian/ubuntu下安装Neo4j

    文章目录 Linux: debian/ubuntu下安装Neo4j Linux: debian/ubuntu下安装Neo4j Neo4j的官方仓库地址:neo4j/neo4j: Graphs for ...

最新文章

  1. 用C语言解“求特殊方程得正整数解”题
  2. Tensorflow:如何保存/恢复模型?
  3. python画图代码彩虹-echarts绘制彩虹图
  4. GHOST分区丢失只剩C盘
  5. 神经网络 | DeepVO:Towards End-to-End Visual Odometry
  6. oracle的dtime,Oracle时间函数
  7. dremwere怎样让多个图片并列排放_PPT图片布局不好看?六步教你,看完就会。
  8. 励志!从中专生到清华博士的逆袭人生
  9. 做技术支持的工作心得
  10. java写的exe程序反编译_【Jad】利用jdk自带的jad.exe实现批量反编译class文件
  11. linux 添加 缺省 网关,CentOS 如何设置缺省网关
  12. 诗与远方:无题(九十六)- 空人空心
  13. 写给需要面试经验的交互设计师(下)
  14. ❤️Java17 发布了,YYDS!重磅!Oracle 宣布 JDK 17 可以免费商用了。。
  15. python多线程结束线程_Python多线程和Office第2部分
  16. Font and PDF
  17. vue 点击打开小窗口
  18. Android实战:CoolWeather酷欧天气(加强版数据接口)代码详解(上)
  19. 前端js和python后端的结合
  20. Redis缓存雪崩缓存击穿缓存穿透

热门文章

  1. Spark SQL连接数据库找不到Mysql驱动解决方法
  2. Vue框架搭建快速入门
  3. php curl保存位置,php – 使用cURL从URL保存图像
  4. expect 赋值shell变量_Shell处理字符串常用技巧终结篇
  5. java获取焦点_[Java教程]dialog获取焦点
  6. 无法使用集合初始化_Java集合类解析之Hashtable
  7. java 8 两个list_java集合框架综述
  8. python中transform用法_Python Wand transform()用法及代码示例
  9. poi 设置word表格颜色_办公软件小课堂 Word表格的设置
  10. java list移除符合条件的元素_从List中移除指定 List 中包含的其所有元素(可选操作)。...