ubuntu下安装与使用Log4cpp
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相关推荐
- Ubuntu 下安装thttpd Web服务器
不知道大家是不是真的需要用appache这么复杂的功能这么强大的web server,其实有很多时候使用webserver也只是一种远程共享访问的方式.这里,Ubuntu repository的提供了 ...
- Ubuntu下安装Apache+PHP+Mysql
Ubuntu下安装 apache+php+mysql文本服务器! ------------------------------------------------------------------- ...
- ubuntu下安装ftp服务器
ubuntu下安装ftp服务器 Ftp服务器是使用以vsftp为例. 1. 安装 $sudo aptitude install vsftpd $ps aux | grep 'ftp' ...
- linux pureftp mysql_在Ubuntu下安装apache2+php5+mysql5+pureftp+ftp
在Ubuntu下安装apache2+php5+mysql5+pureftp+ftp 一.安装Ubuntu7.04 Desktop版 二.ubuntu Linux下手工安装mysql5 1.下载mysq ...
- ubuntu下安装windows虚拟机
ubuntu下安装win7虚拟机总结 ubuntu16.04 虚拟机 安装win7/win10 http://WIN10:你不能访问此共享文件夹,解决方法 VirtualBox虚拟机剪贴板共享
- Linux :debian(ubuntu)下安装和使用haskell
文章目录 Linux :debian(ubuntu)下安装haskell 安装 使用 Linux :debian(ubuntu)下安装haskell 安装 直接使用apt进行安装: sudo apt- ...
- Linux: debian/ubuntu下安装和使用Java 11
Linux: debian/ubuntu下安装和使用Java 11 只需6行命令: su - echo "deb http://ppa.launchpad.net/linuxuprising ...
- Linux: debian/ubuntu下安装和使用Java 8
Linux: debian/ubuntu下安装和使用Java 8 7行命令解决问题: su - echo "deb http://ppa.launchpad.net/webupd8team/ ...
- Linux: debian/ubuntu下安装Neo4j
文章目录 Linux: debian/ubuntu下安装Neo4j Linux: debian/ubuntu下安装Neo4j Neo4j的官方仓库地址:neo4j/neo4j: Graphs for ...
最新文章
- 用C语言解“求特殊方程得正整数解”题
- Tensorflow:如何保存/恢复模型?
- python画图代码彩虹-echarts绘制彩虹图
- GHOST分区丢失只剩C盘
- 神经网络 | DeepVO:Towards End-to-End Visual Odometry
- oracle的dtime,Oracle时间函数
- dremwere怎样让多个图片并列排放_PPT图片布局不好看?六步教你,看完就会。
- 励志!从中专生到清华博士的逆袭人生
- 做技术支持的工作心得
- java写的exe程序反编译_【Jad】利用jdk自带的jad.exe实现批量反编译class文件
- linux 添加 缺省 网关,CentOS 如何设置缺省网关
- 诗与远方:无题(九十六)- 空人空心
- 写给需要面试经验的交互设计师(下)
- ❤️Java17 发布了,YYDS!重磅!Oracle 宣布 JDK 17 可以免费商用了。。
- python多线程结束线程_Python多线程和Office第2部分
- Font and PDF
- vue 点击打开小窗口
- Android实战:CoolWeather酷欧天气(加强版数据接口)代码详解(上)
- 前端js和python后端的结合
- Redis缓存雪崩缓存击穿缓存穿透
热门文章
- Spark SQL连接数据库找不到Mysql驱动解决方法
- Vue框架搭建快速入门
- php curl保存位置,php – 使用cURL从URL保存图像
- expect 赋值shell变量_Shell处理字符串常用技巧终结篇
- java获取焦点_[Java教程]dialog获取焦点
- 无法使用集合初始化_Java集合类解析之Hashtable
- java 8 两个list_java集合框架综述
- python中transform用法_Python Wand transform()用法及代码示例
- poi 设置word表格颜色_办公软件小课堂 Word表格的设置
- java list移除符合条件的元素_从List中移除指定 List 中包含的其所有元素(可选操作)。...