Log4j日志组件 - 终极资料(6)
log4j.appender.dest1=org.apache.log4j.ConsoleAppender log4j.appender.dest1.layout=org.apache.log4j.PatternLayout ############################################
ConsoleAppender指定的是控制台附加器,即日志消息会输出到控制台上,而PatternLayout则指定了消息输出的格式,默认情况下格式为%m%n,%m指定的是消息内容,%n指定的是操作系统平台上的换行符,这里更类似于C语言中的输出控制语句。 现在,你可以编译并且运行TestLogging.java了,你可以获得以下输出结果: Start of main()
Just testing a log message with priority set to INFO Just testing a log message with priority set to WARN Just testing a log message with priority set to ERROR Just testing a log message with priority set to FATAL Calling init()
***System Environment As Seen By Java*** ***Format: PROPERTY = VALUE***
java.runtime.name = Java(TM) 2 Runtime Environment, Standard Edition sun.boot.library.path = c:\\jdk1.3\\jre\\bin java.vm.version = 1.3.0_02
java.vm.vendor = Sun Microsystems Inc. ... and so on
如果想打印消息的层次如debug,info,error等,那可以在log4j.properties 文件的最后一行上增加如下一行: log4j.appender.dest1.layout.ConversionPattern=%-5p: %m%n
这一行覆盖了默认的消息输出格式%m%n,%p指定的是打印消息的层次(info,debug...,其中-5指定的是五个字符的宽度,-指定的是左对齐),%m指定的是消息的内容,%n指定的则是操作系统平台上的换行符.
当作完这些工作后,无须重新编译TestLogging.java,再次运用TestLogg,会得到以下不出的输出结果: DEBUG: Start of main()
INFO : Just testing a log message with priority set to INFO WARN : Just testing a log message with priority set to WARN ERROR: Just testing a log message with priority set to ERROR FATAL: Just testing a log message with priority set to FATAL DEBUG: Calling init()
INFO : ***System Environment As Seen By Java*** DEBUG: ***Format: PROPERTY = VALUE***
INFO : java.runtime.name = Java(TM) 2 Runtime Environment, Standard Edition INFO : sun.boot.library.path = c:\\jdk1.3\\jre\\bin INFO : java.vm.version = 1.3.0_02
INFO : java.vm.vendor = Sun Microsystems Inc. ... and so on
如果不想输出日志的DEBUG与INFO消息,那么可以修改\为: log4j.rootCategory=WARN,dest1
该行文件告诉Log4j跳过层次低于WARN的消息输出,也就是说如DEBUG,INFO层次的消息将不会产生输出,再次运行TestLogging.class,得到以下结果: ####################
WARN : Just testing a log message with priority set to WARN ERROR: Just testing a log message with priority set to ERROR FATAL: Just testing a log message with priority set to FATAL ####################
第二部分 Log4j 详解
Log4j有三个主要的组件:category ,附件器和布局。
在程序中,你可以初始化一个category 并且调用它的各种日志方法来将消息字符串记录到日志中。
一个category可以被配置用来输出到多个目标,这些日志目标在Log4j框架中被称为附件器,这些附件器可以包括控制台、文本文件、HTML文件、XML文件甚至是Windows平的事件日志系统,甚至可以被作为邮件被发送。而这些所有的目标都是通过log4j.properties文件来进行配置,对于使用Log4j框架的程序来讲只是简单地调用类似于info()、debug()等的方法。 附件器类可以是
ConsoleAppender, FileAppender, SMTPAppender, SocketAppender, NTEventLogAppender,
SyslogAppender, JMSAppender, AsyncAppender 和 NullAppender等。 附件器类可以使用布局(layout)来在发送消息到目标之前进行格式化。例如HTMLLayout将会把消息格式化为HTML 格式。
除了可以记录消息字符串到日志文件之外,同时还可以记录日期、时间、消息层次、类名、源代码的行数、方法名称、线程名称以及其它信息,而具体的输出需要由附件器的布局管理器来配置。
category的名字是大小写区分以\分隔的一个字符串。一般情况下我们通常使用your_class_name.class.getName()来获得一个JAVA类名来作为category的名字,例如testproj.util.test。
Each word in the category name is said to be an ancestor of the subsequent words and a parent of the immediately following word. This is important because Log4j has this concept of inheriting priorities and appenders from ancestors until overridden in a particular category.
有一个没有名称的category叫root,它就像xml的document元素,是所有category的祖先。 可以使用以下代码来初始一个根category或指定的category。 ################
Category cat = Category.getRoot();
Category cat2 = Category.getInstance(\###################
代表层次的常量由高到次是FATAL、ERROR、WARN、INFO和DEBUG,可以在log4j.properties中指定category所属的层次,例如指定log4j.rootCategory=WARN,simple则意味调用root这个category的程序只会记录WARN及WARN以上的消息。如果没有为一个category指定默认的category,那么category将会从其父category来继承。 常见的Category类的日志方法有:
public void log(Priority p, Object message);
// Convenient shortcuts to the generic logging method public void debug(Object message); public void info(Object message); public void warn(Object message); public void error(Object message);
public void fatal(Object message);
log4j 只记录层次与预设层次相等或更高级别的消息,如以下代码: Category cat = Category.getRoot();
cat.setPriority(Priority.ERROR);//设置预设层次为ERROR级 // Later...
//cat.info(\这条消息将不会输出,ERROR cat.error(\消息输出,层次相等
cat.fatal(\消息输出,层次高于预设层次
第三部分 Log4j 配置
所有的配置工作应该在log4j.properties文件中完成,而该文件一般须放在应用程序的相同的目录中。
在日志系统使用之前,我们必须首先配置log4j.配置log4j意味着增加附件器到Category并且为每一个Category设置一个Layout。
category之间是有继承关系,但他们增加到log4j.properties文件中的顺序是不固定的。 示例一:
#############################################################
# 设置log4j的根category所使用的预设层次是DEBUG,而只使用A1这个附件器. log4j.rootCategory=DEBUG, A1 #附件器A1被设置为控制台附件器。
log4j.appender.A1=org.apache.log4j.ConsoleAppender #附件器使用的布局是PatternLayout,即模式布局
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
#附件器A1的模式是%-4r [%t] %-5p %c %x - %m%n,其中%m代表消息字符串,%n代表换行 …… 此处隐藏:6618字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [互联网资料]2022年厦门大学机电工程系824机械设计
- [互联网资料]东南大学2022年硕士研究生拟录取名单公
- [互联网资料]能源调研报告(精选多篇)
- [互联网资料]初三英语下学期 中考英语 语法填空训练
- [互联网资料]2022内蒙古选调生行测常识备考:新事物
- [互联网资料]自驾必备!在新西兰租什么样的车自驾游
- [互联网资料]佛教素食菜谱44页未完
- [互联网资料]盈利能力分析外文翻译
- [互联网资料]2022年南昌航空大学音乐学院736马克思
- [互联网资料]优选外贸跟单实习报告总结(精品版)
- [互联网资料]银行新员工培训总结
- [互联网资料]2_year_visa_new_guidance_190316
- [互联网资料]天津市五校宝坻一中静海一中杨村一中芦
- [互联网资料]2007--2008学年第一学期高三数学宁波市
- [互联网资料]Chromatic framework for vision in ba
- [互联网资料]幼儿园大班上学期美术教案《心愿树》含
- [互联网资料]2022年华中农业大学信息学院820微型计
- [互联网资料]硬盘坏道的表现 __硬盘使用久了
- [互联网资料]江苏省2016年会计从业资格考试《会计基
- [互联网资料]公共场所卫生监督试卷全解
- 高级英语第一册所有修辞方法及例子总结
- 综合交通枢纽规划与城市发展
- 沃尔玛的企业文化案例分析
- 美国Thanksgiving Day 感恩节 介绍
- PEP六年级英语上册Unit6How do you fee
- 最齐全的中国大型商场购物中心名单
- 数据结构实验报告八—哈夫曼编译码
- 杭州市余杭区人民政府(通知)
- 七年级语文成语运用专项训练
- 微观经济学第三章 消费者行为 课后习题
- 对_钱学森之问_的思考
- Excel_三级联动_下拉菜单
- 办公用品需求计划申请表
- 对外汉语教材必须要知道的发展史
- 挑战杯大学生学术科技作品竞赛作品申报
- 举办民办教育培训机构应具备下列条件
- 太阳能路灯项目设计方案
- 2013年八年级上最新人教版新教材Unit3I
- 【历史】 6-4 《近代科学之父牛顿》 课
- 高中生物《第四章 第二节 探讨加酶洗衣




