Log4cxx使用小结
log4cxx是Java社区著名的log4j的c++移植版,用于为C++程序提供日志功能,便于问题排查和调试,log4cxx是apache软件基金会的开源项目,基于APR实现跨平台支持。一个良好的日志系统不管是开发、测试还是后期维护,对一个项目来说都是非常重要的。
1、apr的下载及安装
在linux环境下,由于log4cxx是依赖于apr的,因此先安装apr和apr-util这两个库,apr、apr-util下载参考地址为http://apr.apache.org/download.cgi,由于本地存有之前安装apache时下载安装文件(apr-1.5.2.tar.gz,apr-util-1.5.4.tar.gz),直接使用。源文件均放置在/home/kedacom/下,安装步骤如下:
先安装apr库,
$>tar xvf apr-1.5.2.tar.gz
$>cd apr-1.5.2
$>./configuer --prefix=/usr/local/apr
$>make
$>make install
apr安装完成后,在/usr/local下产生apr目录,然后将apr-util库也安装同一目录下,
$>tar xvf apr-util-1.5.4.tar.gz
$>cd apr-util-1.5.4
$>./configuer --prefix=/usr/local/apr --with-apr=/usr/local/apr
$>make
$>make install
2、log4cxx安装
Log4cxx的下载地址为:http://logging.apache.org/log4cxx/download.html,下载源码包,下载完成后会有apache-log4cxx-0.10.0.tar.gz 文件,然后开始安装log4cxx。
$>tar xvf apache-log4cxx-0.10.0.tar.gz
$>cd apache-log4cxx-0.10.0
$>./configure --prefix=/usr/local/log4cxx --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr --with-charset=utf-8 --with-logchar=utf-8
$>make
注意,Centos系统默认的编码格式为utf-8,所以在后面添加--with-charset=utf-8 --with-logchar=utf-8,防止输出中文时为乱码。执行make之后会出现如下报错:
inputstreamreader.cpp:66: error: 'memmove' was not declared in this scope make[3]: *** [inputstreamreader.lo] 错误 1
解决方法:
src/main/cpp/inputstreamreader.cpp文件中添加#include <string.h>
src/main/cpp/socketoutputstream.cpp文件中添加#include <string.h>
src/examples/cpp/console.cpp文件中添加#include <string.h>和#include <stdio.h>
修改完成后,执行再次执行make和make install即可完成安装。
3、Log4cxx配置
配置文件内容实例:
log4j.additivity.gather = false
log4j.rootLogger= debug, R, stdout//设置rootLogger为debug级别
//设置子logger,且子logger为debug级别
log4j.logger.G400 =debug, g400, stdout
//设置不继承父Logger
log4j.additivity.G400=false
log4j.appender.logfile.encoding=UTF-8
//标准输出,向控制台打印
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
//Root的输出设置
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=../../kdvlog/g400log/g400log.log
log4j.appender.R.MaxFileSize=10MB
log4j.appender.R.MaxBackupIndex=9
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern==%d [%5p](%F:%L) - %m%n
//子logger的输出设置
log4j.appender.g400=org.apache.log4j.RollingFileAppender
log4j.appender.g400.File=../../kdvlog/g400log/g400log.log
log4j.appender.g400.MaxFileSize=20MB
log4j.appender.g400.MaxBackupIndex=4
log4j.appender.g400.layout=org.apache.log4j.PatternLayout
log4j.appender.g400.layout.ConversionPattern==%d{yyyy-MM-dd HH:mm:ss}[%c]-[%p] %m%n
配置文件说明:
1、debug为日志级别,按优先级从低到高,日志的级别分别为debug, info, warn,error, fatal。通过在这里定义的级别,可以控制到应用程序中相应级别的日志信息的开关。比如这里定义了info级别,则应用程序中比info等级低的所有级别(此处只有debug级别)的日志信息将不被打印出来。
2、appender日志输出位置,log4j提供的appender有以下几种:
org.apache.log4j.ConsoleAppender //控制台
org.apache.log4j.FileAppender //文件
org.apache.log4j.DailyRollingFileAppender //每天产生一个日志文件
org.apache.log4j.RollingFileAppender //文件大小到达指定尺寸的时候产生一个新的文件
org.apache.log4j.WriterAppender //将日志信息以流格式发送到任意指定的地方
3、Log4j采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下:
%m 输出代码中指定的消息
%p 输出优先级,即debug,info,warn,error,fatal
%r 输出自应用启动到输出该log信息耗费的毫秒数
%c 输出所属的类目,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符,Windows平台为“/r/n”,Unix平台为“/n”
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy-MM-dd HH:mm:ss,SSS},输出2017-9-14 15:16:17,890
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。
Log4cxx使用小结相关推荐
- 【阶段小结】协同开发——这学期的Git使用小结
[阶段小结]协同开发--这学期的Git使用小结 一.Git简介 1. Git简单介绍 2. Git工作流程以及各个区域 3. Git文件状态变化 二.Git安装&Git基本配置 三.个人踩坑 ...
- 正则表达式(括号)、[中括号]、{大括号}的区别小结
正则表达式(括号).[中括号].{大括号}的区别小结 </h1><div class="clear"></div><div class=& ...
- php中$_REQUEST、$_POST、$_GET的区别和联系小结
php中$_REQUEST.$_POST.$_GET的区别和联系小结 作者: 字体:[增加 减小] 类型:转载 php中有$_request与$_post.$_get用于接受表单数据,当时他们有何种区 ...
- log4cxx第三篇----使用多个logger
使用多个logger时,所有logger的配置写在一个配置文件里面 两个例子: 1 一个继承的例子(http://logging.apache.org/log4cxx/) // file com/fo ...
- c cin.get()的用法小结_c语言中static 用法
static在c里面可以用来修饰变量,也可以用来修饰函数. 先看用来修饰变量的时候.变量在c里面可分为存在全局数据区.栈和堆里.其实我们平时所说的堆栈是栈而不是堆,不要弄混. int a ; int ...
- linux 压缩文件夹格式,Linux下常见文件格式的压缩、解压小结
Linux下常见文件格式的压缩.解压小结 .tar 解包: tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是压缩!) ...
- 设计模式:简单工厂、工厂方法、抽象工厂之小结与区别
简单工厂,工厂方法,抽象工厂都属于设计模式中的创建型模式.其主要功能都是帮助我们把对象的实例化部分抽取了出来,优化了系统的架构,并且增强了系统的扩展性. 本文是本人对这三种模式学习后的一个小结以及对他 ...
- flash 入门课知识小结
一. 几种类型帧的小结:(关键帧.空白关键帧.普通帧) 1. 特点 帧--是进行flash动画制作的最基本的单位,每一个精彩的flash动画都是由很多个精心雕琢的帧构成的,在时间轴上的每一帧都可以 ...
- Eigen/Matlab 使用小结
文章目录 [Eigen Matlab使用小结](https://www.cnblogs.com/rainbow70626/p/8819119.html) Eigen初始化 0.[官网资料](http: ...
- MATLAB【十三】————仿真函数记录以及matlab变成小结
part one:matlab 编程小结. 1.char 与string的区别,char使用的单引号 '' ,string使用的是双引号"". 2.一般标题中的输出一定要通过 nu ...
最新文章
- 2020年人工神经网络第二次作业-参考答案第一题
- ( Android-源代码分享)
- Java记录 -55- Set下的HashSet
- Python 列表拷贝
- linux echo命令
- mysql左右连接举例_MYSQL 连接举例
- 20145202马超 《Java程序设计》 实验一 实验报告
- Linux下安装、配置、授权、调优Mysql
- flex blazeds java spring_flex+blazeds+java+spring后台消息推送
- 小米手机开启开发者模式的步骤与方法
- 希腊女孩创办自媒体教希腊语,如今用户已达1000人
- Mac OS开发之icns文件
- 重装系统,无法进入到硬盘启动
- TM1637数码管实验总结
- failed to connect to ‘192.168.31.157:5555‘: Connection refused
- 区别 |Python的 open() 和with open() as
- Visual Studio Code 快捷键 Mac 版
- 浙大愤青教授郑强经典语录
- ***编程DIY (Delphi版) - 第3篇 星号密码查看工具
- 4.5-那些漂亮软件是怎么做出来的?为啥自己做的好丑