教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 互联网资料 >

Log4j日志组件 - 终极资料(6)

来源:网络收集 时间:2026-09-02
导读: log4j.appender.dest1=org.apache.log4j.ConsoleAppender log4j.appender.dest1.layout=org.apache.log4j.PatternLayout ############################################ ConsoleAppender指定的是控制台附加器,即日

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字,全部文档内容请下载后查看。喜欢就下载吧 ……

Log4j日志组件 - 终极资料(6).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/444619.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)