﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-成长中的记忆-文章分类-Log4J</title><link>http://www.blogjava.net/aiyoyoyo/category/7533.html</link><description>这是我的成长，这是我的天地，学习JAVA，只因快乐。</description><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 21:12:26 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 21:12:26 GMT</pubDate><ttl>60</ttl><item><title>简单的Log4j 配置 原</title><link>http://www.blogjava.net/aiyoyoyo/articles/76124.html</link><dc:creator>aiyoyoyo</dc:creator><author>aiyoyoyo</author><pubDate>Thu, 19 Oct 2006 04:10:00 GMT</pubDate><guid>http://www.blogjava.net/aiyoyoyo/articles/76124.html</guid><wfw:comment>http://www.blogjava.net/aiyoyoyo/comments/76124.html</wfw:comment><comments>http://www.blogjava.net/aiyoyoyo/articles/76124.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/aiyoyoyo/comments/commentRss/76124.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/aiyoyoyo/services/trackbacks/76124.html</trackback:ping><description><![CDATA[
		<p>commons-logging.properties文件<br />##org.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog</p>
		<p>org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger<br /><br /><br />Log4j.properties文件<br />## LOGGERS ##<br /># define a logger named helloAppLogger<br />log4j.rootLogger=INFO,console,file    #日志级别为Info<br /><br />## APPENDERS ##<br /># define an appender named console, which is set to be a ConsoleAppender<br />log4j.appender.console=org.apache.log4j.ConsoleAppender</p>
		<p># define an appender named file, which is set to be a RollingFileAppender<br />log4j.appender.file=org.apache.log4j.RollingFileAppender<br />log4j.appender.file.File=M:\\myserver.log   #日志写入文件 </p>
		<p>## LAYOUTS ##<br /># assign a SimpleLayout to console appender<br />log4j.appender.console.layout=org.apache.log4j.SimpleLayout</p>
		<p># assign a PatternLayout to file appender<br />log4j.appender.file.layout=org.apache.log4j.PatternLayout<br />log4j.appender.file.layout.ConversionPattern==%d{yyyy MMM dd HH:mm:ss} %-5p %c - %m%n  #日志输出日期格式<br /><br />simplelog.properties<br />#Tue Feb 07 11:31:28 CST 2006<br />org.apache.commons.logging.simplelog.defaultlog=info<br /><br />这3个文件直接放在你src目录下就可以了.<br />类里这么调用<br />import org.apache.commons.logging.Log;<br />import org.apache.commons.logging.LogFactory;<br /><br />Log log = LogFactory.getLog("XXX");<br />log.info("log message");</p>
<img src ="http://www.blogjava.net/aiyoyoyo/aggbug/76124.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/aiyoyoyo/" target="_blank">aiyoyoyo</a> 2006-10-19 12:10 <a href="http://www.blogjava.net/aiyoyoyo/articles/76124.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Log4j日志管理系统简单使用说明</title><link>http://www.blogjava.net/aiyoyoyo/articles/76122.html</link><dc:creator>aiyoyoyo</dc:creator><author>aiyoyoyo</author><pubDate>Thu, 19 Oct 2006 04:01:00 GMT</pubDate><guid>http://www.blogjava.net/aiyoyoyo/articles/76122.html</guid><wfw:comment>http://www.blogjava.net/aiyoyoyo/comments/76122.html</wfw:comment><comments>http://www.blogjava.net/aiyoyoyo/articles/76122.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/aiyoyoyo/comments/commentRss/76122.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/aiyoyoyo/services/trackbacks/76122.html</trackback:ping><description><![CDATA[
		<font color="#333333">Log4j有三个主要的组件：Loggers，Appenders和Layouts，这里可简单理解为日志类别，日志要输出的地方和日志以何种形式输出。综合使用这三个组件可以轻松的记录信息的类型和级别，并可以在运行时控制日志输出的样式和位置。下面对三个组件分别进行说明：<br />　　<br />　　<b>1、 Loggers</b><br />　　Loggers组件在此系统中被分为五个级别：DEBUG、INFO、WARN、ERROR和FATAL。这五个级别是有顺序的，DEBUG &lt; INFO &lt; WARN &lt; ERROR &lt; FATAL，明白这一点很重要，这里Log4j有一个规则：假设Loggers级别为P，如果在Loggers中发生了一个级别Q比P高，则可以启动，否则屏蔽掉。<br />　　<br />　　Java程序举例来说：<br />　　<br />　　//建立Logger的一个实例，命名为“com.foo”<br />　　<br />　　Logger　logger = Logger.getLogger("com.foo");<br />　　<br />　　//设置logger的级别。通常不在程序中设置logger的级别。一般在配置文件中设置。<br />　　<br />　　logger.setLevel(Level.INFO);<br />　　<br />　　Logger barlogger = Logger.getLogger("com.foo.Bar");<br />　　<br />　　//下面这个请求可用，因为WARN &gt;= INFO<br />　　<br />　　logger.warn("Low fuel level.");<br />　　<br />　　//下面这个请求不可用，因为DEBUG &lt; INFO<br />　　<br />　　logger.debug("Starting search for nearest gas station.");<br />　　<br />　　//命名为“com.foo.bar”的实例barlogger会继承实例“com.foo”的级别。因此，下面这个请求可用，因为INFO &gt;= INFO<br />　　<br />　　barlogger.info("Located nearest gas station.");<br />　　<br />　　//下面这个请求不可用，因为DEBUG &lt; INFO<br />　　<br />　　barlogger.debug("Exiting gas station search");<br />　　<br />　　这里“是否可用”的意思是能否输出Logger信息。<br />　　<br />　　在对Logger实例进行命名时，没有限制，可以取任意自己感兴趣的名字。一般情况下建议以类的所在位置来命名Logger实例，这是目前来讲比较有效的Logger命名方式。这样可以使得每个类建立自己的日志信息，便于管理。比如：<br />　　<br />　　static Logger logger = Logger.getLogger(ClientWithLog4j.class.getName());<br />　　<br />　　<b>2、 Appenders</b><br />　　禁用与使用日志请求只是Log4j其中的一个小小的地方，Log4j日志系统允许把日志输出到不同的地方，如控制台（Console）、文件（Files）、根据天数或者文件大小产生新的文件、以流的形式发送到其它地方等等。<br />　　<br />　　其语法表示为：<br />　　<br />　　org.apache.log4j.ConsoleAppender（控制台），<br />　　<br />　　org.apache.log4j.FileAppender（文件），<br />　　org.apache.log4j.DailyRollingFileAppender（每天产生一个日志文件），org.apache.log4j.RollingFileAppender（文件大小到达指定尺寸的时候产生一个新的文件），<br />　　org.apache.log4j.WriterAppender（将日志信息以流格式发送到任意指定的地方）<br />　　<br />　　配置时使用方式为：<br />　　<br />　　log4j.appender.appenderName = fully.qualified.name.of.appender.class<br />　　<br />　　log4j.appender.appenderName.option1 = value1<br />　　<br />　　…<br />　　<br />　　log4j.appender.appenderName.option = valueN<br />　　<br />　　这样就为日志的输出提供了相当大的便利。<br />　　<br />　　<b>3、 Layouts</b><br />　　有时用户希望根据自己的喜好格式化自己的日志输出。Log4j可以在Appenders的后面附加Layouts来完成这个功能。Layouts提供了四种日志输出样式，如根据HTML样式、自由指定样式、包含日志级别与信息的样式和包含日志时间、线程、类别等信息的样式等等。<br />　　<br />　　其语法表示为：<br />　　<br />　　org.apache.log4j.HTMLLayout（以HTML表格形式布局），<br />　　org.apache.log4j.PatternLayout（可以灵活地指定布局模式），<br />　　org.apache.log4j.SimpleLayout（包含日志信息的级别和信息字符串），<br />　　org.apache.log4j.TTCCLayout（包含日志产生的时间、线程、类别等等信息）<br />　　<br />　　配置时使用方式为：<br />　　<br />　　log4j.appender.appenderName.layout =　　　 fully.qualified.name.of.layout.class<br />　　log4j.appender.appenderName.layout.option1 = value1<br />　　…<br />　　log4j.appender.appenderName.layout.option = valueN<br />　　<br />　　以上是从原理方面说明Log4j的使用方法，在具体Java编程使用Log4j可以参照以下示例：<br />　　<br />　　<b>1、 建立Logger实例：</b><br />　　语法表示：public static Logger getLogger( String name)<br />　　实际使用：static Logger logger = Logger.getLogger　 (ServerWithLog4j.class.getName ()) ;<br />　　<br />　　<b>2、 读取配置文件：</b><br />　　获得了Logger的实例之后，接下来将配置Log4j使用环境：<br />　　语法表示：<br />　　BasicConfigurator.configure()：自动快速地使用缺省Log4j环境。<br />　　PropertyConfigurator.configure(String configFilename)：读取使用Java的特性文件编写的配置文件。<br />　　DOMConfigurator.configure(String filename)：读取XML形式的配置文件。<br />　　实际使用：PropertyConfigurator.configure("ServerWithLog4j.properties");<br />　　<br />　　<b>3、 插入日志信息</b><br />　　完成了以上连个步骤以后，下面就可以按日志的不同级别插入到你要记录日志的任何地方了。<br />　　语法表示：<br />　　Logger.debug(Object message);<br />　　Logger.info(Object message);<br />　　Logger.warn(Object message);<br />　　Logger.error(Object message);<br />　　实际使用：logger.info("ServerSocket before accept: " + server);<br />　　<br />　　在实际编程时，要使Log4j真正在系统中运行事先还要对配置文件进行定义。定义步骤就是对Logger、Appender及Layout的分别使用，具体如下：<br />　　<br />　　<b>1、 配置根Logger，其语法为：</b><br />　　log4j.rootLogger = [ level ] , appenderName, appenderName, …<br />　　这里level指Logger的优先级，appenderName是日志信息的输出地，可以同时指定多个输出地。如：log4j.rootLogger= INFO,A1,A2<br />　　<br />　　<b>2、 配置日志信息输出目的地，其语法为：</b><br />　　log4j.appender.appenderName = fully.qualified.name.of.appender.class<br />　　可以指定上面所述五个目的地中的一个。<br />　　<br />　　<b>3、 配置日志信息的格式，其语法为：</b><br />　　log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class<br />　　这里上面三个步骤是对前面Log4j组件说明的一个简化；下面给出一个具体配置例子，在程序中可以参照执行：<br />　　log4j.rootLogger=INFO,A1<br />　　log4j.appender.A1=org.apache.log4j.ConsoleAppender<br />　　log4j.appender.A1.layout=org.apache.log4j.PatternLayout<br />　　log4j.appender.A1.layout.ConversionPattern=<br />　　%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n<br />　　这里需要说明的就是日志信息格式中几个符号所代表的含义：<br />　　－X号: X信息输出时左对齐；<br />　　%p: 日志信息级别<br />　　%d{}: 日志信息产生时间<br />　　%c: 日志信息所在地（类名）<br />　　%m: 产生的日志具体信息<br />　　%n: 输出日志信息换行<br />　　<br />　　根据上面的日志格式，某一个程序的输出结果如下：<br />　　0　　INFO　2003-06-13 13:23:46968 ClientWithLog4j Client socket: Socket[addr=localhost/127.0.0.1,port=8002,localport=2014]<br />　　16　 DEBUG 2003-06-13 13:23:46984 ClientWithLog4j Server says: 'Java server with log4j, Fri Jun 13 13:23:46 CST 2003'<br />　　16　 DEBUG 2003-06-13 13:23:46984 ClientWithLog4j GOOD<br />　　16　 DEBUG 2003-06-13 13:23:46984 ClientWithLog4j Server responds: 'Command 'HELLO' not understood.'<br />　　16　 DEBUG 2003-06-13 13:23:46984 ClientWithLog4j HELP<br />　　16　 DEBUG 2003-06-13 13:23:46984 ClientWithLog4j Server responds: 'Vocabulary: HELP QUIT'<br />　　16　 DEBUG 2003-06-13 13:23:46984 ClientWithLog4j QUIT </font>
<img src ="http://www.blogjava.net/aiyoyoyo/aggbug/76122.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/aiyoyoyo/" target="_blank">aiyoyoyo</a> 2006-10-19 12:01 <a href="http://www.blogjava.net/aiyoyoyo/articles/76122.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Log4j基本使用方法</title><link>http://www.blogjava.net/aiyoyoyo/articles/31213.html</link><dc:creator>aiyoyoyo</dc:creator><author>aiyoyoyo</author><pubDate>Fri, 17 Feb 2006 08:10:00 GMT</pubDate><guid>http://www.blogjava.net/aiyoyoyo/articles/31213.html</guid><wfw:comment>http://www.blogjava.net/aiyoyoyo/comments/31213.html</wfw:comment><comments>http://www.blogjava.net/aiyoyoyo/articles/31213.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/aiyoyoyo/comments/commentRss/31213.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/aiyoyoyo/services/trackbacks/31213.html</trackback:ping><description><![CDATA[Log4j由三个重要的组件构成：日志信息的优先级，日志信息的输出目的地，日志信息的输出格式。日志信息的优先级从高到低有ERROR、WARN、INFO、DEBUG，分别用来指定这条日志信息的重要程度；日志信息的输出目的地指定了日志将打印到控制台还是文件中；而输出格式则控制了日志信息的显示内容。
<P>　　一、定义配置文件</P>
<P>　　其实您也可以完全不使用配置文件，而是在代码中配置Log4j环境。但是，使用配置文件将使您的应用程序更加灵活。Log4j支持两种配置文件格式，一种是XML格式的文件，一种是Java特性文件（键=值）。下面我们介绍使用Java特性文件做为配置文件的方法：</P>
<P>　　1.配置根Logger，其语法为：</P>
<P>　　log4j.rootLogger = [ level ] , appenderName, appenderName, … </P>
<P>　　其中，level 是日志记录的优先级，分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。Log4j建议只使用四个级别，优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别，您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了INFO级别，则应用程序中所有DEBUG级别的日志信息将不被打印出来。 appenderName就是指定日志信息输出到哪个地方。您可以同时指定多个输出目的地。 </P>
<P>　　2.配置日志信息输出目的地Appender，其语法为：</P>
<P>　　log4j.appender.appenderName = fully.qualified.name.of.appender.class <BR>　　log4j.appender.appenderName.option1 = value1 <BR>　　… <BR>　　log4j.appender.appenderName.option = valueN </P>
<P>　　其中，Log4j提供的appender有以下几种： <BR>　　org.apache.log4j.ConsoleAppender（控制台）， <BR>　　org.apache.log4j.FileAppender（文件）， <BR>　　org.apache.log4j.DailyRollingFileAppender（每天产生一个日志文件），<BR>　　org.apache.log4j.RollingFileAppender（文件大小到达指定尺寸的时候产生一个新的文件）， <BR>　　org.apache.log4j.WriterAppender（将日志信息以流格式发送到任意指定的地方） </P>
<P>　　3.配置日志信息的格式（布局），其语法为：</P>
<P>　　log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class <BR>　　log4j.appender.appenderName.layout.option1 = value1 <BR>　　… <BR>　　log4j.appender.appenderName.layout.option = valueN </P>
<P>　　其中，Log4j提供的layout有以下几种： <BR>　　org.apache.log4j.HTMLLayout（以HTML表格形式布局）， <BR>　　org.apache.log4j.PatternLayout（可以灵活地指定布局模式）， <BR>　　org.apache.log4j.SimpleLayout（包含日志信息的级别和信息字符串）， <BR>　　org.apache.log4j.TTCCLayout（包含日志产生的时间、线程、类别等等信息） </P>
<P>　　Log4J采用类似C语言中的printf函数的打印格式格式化日志信息，打印参数如下： %m 输出代码中指定的消息</P>
<P>　　%p 输出优先级，即DEBUG，INFO，WARN，ERROR，FATAL <BR>　　%r 输出自应用启动到输出该log信息耗费的毫秒数 <BR>　　%c 输出所属的类目，通常就是所在类的全名 <BR>　　%t 输出产生该日志事件的线程名 <BR>　　%n 输出一个回车换行符，Windows平台为“\r\n”，Unix平台为“\n” <BR>　　%d 输出日志时间点的日期或时间，默认格式为ISO8601，也可以在其后指定格式，比如：%d{yyy MMM dd HH:mm:ss,SSS}，输出类似：2002年10月18日 22：10：28，921 <BR>　　%l 输出日志事件的发生位置，包括类目名、发生的线程，以及在代码中的行数。举例：Testlog4.main(TestLog4.java:10) </P>
<P>　　二、在代码中使用Log4j </P>
<P>　　1.得到记录器</P>
<P>　　使用Log4j，第一步就是获取日志记录器，这个记录器将负责控制日志信息。其语法为： </P>
<P>　　public static Logger getLogger( String name) </P>
<P>　　通过指定的名字获得记录器，如果必要的话，则为这个名字创建一个新的记录器。Name一般取本类的名字，比如： </P>
<P>　　static Logger logger = Logger.getLogger ( ServerWithLog4j.class.getName () )</P>
<P>　　2.读取配置文件 </P>
<P>　　当获得了日志记录器之后，第二步将配置Log4j环境，其语法为：</P>
<P>　　BasicConfigurator.configure ()： 自动快速地使用缺省Log4j环境。<BR>　　PropertyConfigurator.configure ( String configFilename) ：读取使用Java的特性文件编写的配置文件。<BR>　　DOMConfigurator.configure ( String filename ) ：读取XML形式的配置文件。</P>
<P>　　3.插入记录信息（格式化日志信息）</P>
<P>　　当上两个必要步骤执行完毕，您就可以轻松地使用不同优先级别的日志记录语句插入到您想记录日志的任何地方，其语法如下：</P>
<P>　　Logger.debug ( Object message ) ;<BR>　　Logger.info ( Object message ) ;<BR>　　Logger.warn ( Object message ) ;<BR>　　Logger.error ( Object message ) ;<BR></P>
<P>例子：<BR>log4j.rootLogger=INFO,stdout,rolling<BR>log4j.appender.stdout=org.apache.log4j.ConsoleAppender<BR>log4j.appender.stdout.layout=org.apache.log4j.PatternLayout<BR>log4j.appender.stdout.layout.ConversionPattern=%d %r [%t] %5p [%F:%L] - %m%n</P>
<P>log4j.appender.rolling.layout=org.apache.log4j.PatternLayout<BR>log4j.appender.rolling.layout.ConversionPattern=%d %r [%t] %5p [%F:%L] - %m%n<BR>log4j.appender.rolling=org.apache.log4j.RollingFileAppender<BR>log4j.appender.rolling.File=c:\woogo.log<BR>#log4j.appender.rolling.File=/usr/local/jakarta-tomcat-5.0.25/logs/woogo.log<BR>log4j.appender.rolling.MaxFileSize=5120KB<BR>log4j.appender.rolling.MaxBackupIndex=10<BR></P><img src ="http://www.blogjava.net/aiyoyoyo/aggbug/31213.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/aiyoyoyo/" target="_blank">aiyoyoyo</a> 2006-02-17 16:10 <a href="http://www.blogjava.net/aiyoyoyo/articles/31213.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>