【学习笔记】log4cxx配置详解
来源:互联网 发布:郑州it外包公司 编辑:程序博客网 时间:2024/04/29 00:27
一、简述
由于log4cxx是log4j的C++版本的实现,因此配置也是沿用log4j的配置,没有太大的差异,在互联网上找到讲解的log4cxx的配置的文章也很多,因此一些基本的配置和语法我不在过多陈述,为了笔记我会从互联网上摘抄一部分,然后加些自己的理解,尽量将这个配置说清楚。
二、主要组成部分
1.优先级
Logger的语法:
log4j.rootLogger = [ level ] , appenderName, appenderName, …
其中,level 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者自定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,可以控制到应用程序中相应级别的日志信息的开关。比如这里定义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。 appenderName名字任意,用来标示日志信息输出到哪里,可以同时指定多个。
2.输出目的地
Appender的语法:
log4j.appender.appenderName = fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1 = value1
…
log4j.appender.appenderName.option = valueN
其中,Log4j提供的appender有以下几种:
org.apache.log4j.ConsoleAppender 控制台
org.apache.log4j.FileAppender 文件
org.apache.log4j.DailyRollingFileAppender 每天产生一个日志文件
org.apache.log4j.RollingFileAppender 文件大小到达指定尺寸的时候产生一个新的文件
org.apache.log4j.WriterAppender 将日志信息以流格式发送到任意指定的地方
3.输出格式
log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
log4j.appender.appenderName.layout.option1 = value1
…
log4j.appender.appenderName.layout.option = valueN
Log4j提供的Layout有以下几种:
org.apache.log4j.HTMLLayout 以HTML表格形式布局
org.apache.log4j.PatternLayout 可以灵活地指定布局模式
org.apache.log4j.SimpleLayout 包含日志信息的级别和信息字符串
org.apache.log4j.TTCCLayout 包含日志产生的时间、线程、类别等等信息
Log4j采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下:
%m 输出代码中指定的消息
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%r 输出自应用启动到输出该log信息耗费的毫秒数
%c 输出所属的类目,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符,Windows平台为“/r/n”,Unix平台为“/n”
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出2008年11月14日 15:16:17,890
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。
三、实例
log4cxx.properties log4cxx配置文件
#默认输出到文件log4j.rootLogger=INFO,fa,ca#设置日志对象log4j.logger.console=INFO,calog4j.logger.file=INFO,falog4j.additivity.file=false#**************************#控制台,同时也会输出到默认输出对象#**************************log4j.appender.ca=org.apache.log4j.ConsoleAppenderlog4j.appender.ca.layout=org.apache.log4j.PatternLayoutlog4j.appender.ca.layout.ConversionPattern=[%-5p][%d] : %m%n#**************************#文件#**************************log4j.appender.fa=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.fa.File=./log/today.loglog4j.appender.fa.Append=faslelog4j.appender.fa.MaxFileSize=10MBlog4j.appender.fa.MaxBackupIndex=1000log4j.appender.fa.DatePattern=yyyy-MM-ddlog4j.appender.fa.layout=org.apache.log4j.PatternLayoutlog4j.appender.fa.layout.ConversionPattern=[%-5p][%d] : %m%n
上面是我常用的一个配置,总共有两个输出对象fa和ca,分别表示输出到文件和输出到控制台。我又配置了三个代码中需要的对象,分别是:
rootLogger 默认对象,引用了fa和ca,即输出到控制台和文件;
file 只引用到fa,输出到文件,但file多了一项配置log4j.additivity.file=false,这是不向默认对象(rootLogger)输出,因此信息只能输出到文件;
console 只引用到ca,输出到控制台,但additivity的默认值是true,也就是信息除了输出到ca外,还会输出到rootLogger,因此控制台会有两次的信息输出和一次的文件输出。
在代码使用
static log4cxx::LoggerPtr logger1= log4cxx::Logger::getLogger("console");static log4cxx::LoggerPtr logger2= log4cxx::Logger::getLogger("file");static log4cxx::LoggerPtr logger3= log4cxx::Logger::getLogger("socket");
logger1对应的是配置中的console对象
logger2对应的是配置中的file对象
logger3在配置中找不到socket对象,因此他的信息会输出到rootLogger,因为所有未配置的对象会默认输出到rootLogger。
(注:标红部分是从网上摘抄的)
- 【学习笔记】log4cxx配置详解
- 【学习笔记】log4cxx安装和使用
- log4cxx 用法详解
- log4cxx 用法详解
- log4cxx 基本配置
- log4cxx配置案例
- log4cxx每天一个文件配置
- log4cxx 使用代码进行配置
- Linux 下log4cxx环境配置
- Log4cxx
- Log4cxx
- LOG4CXX
- log4cxx
- log4cxx
- log4cxx
- log4cxx配置文件(log4cxx.properties文件)详解 --调整日志输出级别
- 使用XML文件方式配置log4cxx(log4cxx xml例子)
- 使用XML文件方式配置log4cxx(log4cxx xml例子)
- 用nmake编译链接程序报错error LNK2019: 无法解析的外部符号_WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用
- C#父类引用指向子类
- 【转】SendMessage 和 PostMessage 的区别
- Struts2拦截器
- UVa OJ全部题目列表(按难度分级,仅标题)
- 【学习笔记】log4cxx配置详解
- Exception初识
- 【转】关于Invalidate、InvalidateRect和UpdateWindow
- eclipse连接oracle数据库的方法
- IE 8 HTML Parsing Error: Unable to modify the parent container element before the child element is c
- libxml/tree.h not found(xcode4.5解决方案)
- “3D打印”的魔法时代还有多远?
- 更改MFC生成的程序的默认exe图标
- SCWCD(Servlet&Jsp learning)第三问-------JSP内置对象详解