Log4j 入门总结

jopen 12年前
     <h1>一、Log4j介绍</h1>    <p>log4j是类似于java.util.logging的日志作用,即记录一些有用信息,是一个日志框架;</p>    <p>log4j == log for Java</p>    <p>日志框架的作用:</p>    <p>(1)函数参数是否正确;</p>    <p>(2)软件发布后,记录用户的每一步操作;</p>    <p>(3)记录程序运行出错位置;</p>    <p>log4j在<a href="/misc/goto?guid=4959517964036870525">http://logging.apache.org/log4j/1.2/download.html</a> 中进行下载;</p>    <p>log4j的api文档在log4j/site/apidocs/index.html中;</p>    <p>log4j可以改变日志记录的形式比如HTML、Simple等;</p>    <p>log4j可以改变日志输出的目的地,比如File、DB等;</p>    <p> </p>    <h1>二、配置使用Log4j</h1>    <p> </p>    <p>原本是一个zip包,取出jar包,并在Eclipse的某个Project build path导入;</p>    <p> </p>    <h1>三、简单的使用Log4j</h1>    <p> </p>    <p>log4j需要配置文件log4j.properties进行配置,log4j.properties<span style="color:#e53333;">位于src目录</span><span style="color:#e53333;">下;</span></p>    <p> </p>    <p>log4j.properties规则:</p>    <p>(1)键值对;</p>    <p>(2)#代表注释;</p>    <p>(3)不支持中文;</p>    <p> </p>    <p><strong>Log4jDemo.java</strong></p>    <p><strong><br /> </strong></p>    <p></p>    <pre class="brush:java; toolbar: true; auto-links: false;">package org.impl;  import org.apache.log4j.Logger;  public class Log4jDemo {  public static void main(String args[]){   Logger logger = Logger.getLogger(org.impl.Log4jDemo.class);   logger.debug("debug");   logger.info("info");   logger.error("error");  } }</pre>    <strong>log4j.properties</strong>    <p></p>    <p><strong><br /> </strong></p>    <pre class="brush:xml; toolbar: true; auto-links: false;">log4j.rootLogger=debug,appender1 log4j.appender.appender1=org.apache.log4j.ConsoleAppender log4j.appender.appender1.layout=org.apache.log4j.TTCCLayout</pre>    <br />    <strong>显示结果:<br /> <br /> </strong>    <pre class="brush:xml; toolbar: true; auto-links: false;">[main] DEBUG org.impl.Log4jDemo - debug [main] INFO org.impl.Log4jDemo - info [main] ERROR org.impl.Log4jDemo - error</pre>    <br />    <br /> 这样一个简单的log4j应用。    <p></p>    <p> </p>    <p>这个配置文件的意思是:</p>    <p>rootLogger表示最低显示等级,即显示debug等级及以上的信息;</p>    <p>appender1表示一个名字;</p>    <p>ConsoleAppender表示输出到控制台,如果想要输出到文件,则可以使用FileAppender并制定文件名称;</p>    <p>TTCCLayout是一种布局方式;</p>    <p>debug等级表示在编译开发阶段的信息;</p>    <p>error等级表示错误信息;</p>    <p>info等级表示一般的信息;</p>    <p> </p>    <p>如果看到如下信息:</p>    <pre class="brush:xml; toolbar: true; auto-links: false;">log4j:WARN No appenders could be found for logger (org.impl.Log4jDemo). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.</pre>表示配置文件位置不正确,应该放到src目录下!    <br />    <br />    <br />    <h1>四、逐步了解Log4j</h1>    <p><strong>任务1:将日志输出到指定文件<br /> </strong></p>    <p>只需要修改配置文件即可,配置文件修改为:</p>    <p><strong><br /> </strong></p>    <pre class="brush:xml; toolbar: true; auto-links: false;">log4j.rootLogger=debug,appender1 log4j.appender.appender1=org.apache.log4j.FileAppender log4j.appender.appender1.File=./java0.log log4j.appender.appender1.layout=org.apache.log4j.TTCCLayout</pre>    <p> </p>    <p>这样就指定了日志输出到工程目录下的java0.log文件中;</p>    <p>注意:这个日志文件时追加类型的。</p>    <p> </p>    <p><strong>任务2:将日志输出以HTML格式输出(效果很好!)</strong></p>    <p>修改配置文件为:</p>    <pre class="brush:xml; toolbar: true; auto-links: false;">log4j.rootLogger=debug,appender1 log4j.appender.appender1=org.apache.log4j.FileAppender log4j.appender.appender1.File=./java0.html log4j.appender.appender1.layout=org.apache.log4j.HTMLLayout</pre>    <p>即可;</p>    <p> </p>    <p><strong>任务3:同时输出到控制台和文件</strong></p>    <p>修改配置文件为:</p>    <p style="font:12px Arial,Verdana,sans-serif;"></p>    <pre class="brush:xml; toolbar: true; auto-links: false;">log4j.rootLogger=debug,appender1,appender2 log4j.appender.appender1=org.apache.log4j.FileAppender log4j.appender.appender1.File=./log4j.HTML log4j.appender.appender1.layout=org.apache.log4j.HTMLLayout  log4j.appender.appender2=org.apache.log4j.ConsoleAppender log4j.appender.appender2.layout=org.apache.log4j.SimpleLayout</pre>    <p> </p>    <h1>五、Log4j核心组件</h1>    <p> </p>    <h3>1.Logger</h3>    <p> </p>    <p>设定了显示日志的级别;</p>    <p><strong>常用级别为debug,info,warn,error,fatal;</strong></p>    <p> </p>    <h3>2.Appender</h3>    <p> </p>    <p>设定了日志的输出目的;</p>    <p>常用有:</p>    <p><strong>(1)ConsoleAppender</strong></p>    <p><strong>(2)FileAppender</strong></p>    <p><strong>(3)DailyRollingFileAppender  一天换一个文件</strong></p>    <p><strong>(4)JdbcAppender   输出到数据库<br /> </strong> </p>    <h3>3.Layout</h3>    <p> </p>    <p>设定日志的内容格式;</p>    <p> </p>    <p>常用有:</p>    <p><strong>(1)HTMLLayout;</strong></p>    <p><strong>(2)TTCCLayout;</strong></p>    <p><strong>(3)PatternLayout;制定布局样式</strong></p>    <p> </p>    <p>如果要设置PatternLayout,必须将配置文件修改为以下形式:</p>    <p> </p>    <p style="font:12px Arial,Verdana,sans-serif;"></p>    <pre class="brush:xml; toolbar: true; auto-links: false;">log4j.rootLogger=debug,appender1,appender2 log4j.appender.appender1=org.apache.log4j.FileAppender log4j.appender.appender1.File=./log4j.HTML log4j.appender.appender1.layout=org.apache.log4j.HTMLLayout  log4j.appender.appender2=org.apache.log4j.ConsoleAppender log4j.appender.appender2.layout=org.apache.log4j.PatternLayout  log4j.appender.appender2.layout.ConversionPattern= 格式名称</pre>    <p><br /> <strong>格式形式如下:</strong></p>    <p><strong><br /> </strong></p>    <p>%p:日志优先级(debug、info)</p>    <p>%t:输出日志的线程名;</p>    <p>%d{yyyy-MM-dd HH:mm:ss}:时间;</p>    <p>%c:所属类名;</p>    <p>%r:日志输出所花时间;</p>    <p>%n:换行;</p>    <p>%l:日志所在行;</p>    <p>%m:信息;</p>    <p>%M:方法;</p>    <p> </p>    <h2>比如:</h2>    <div>     <br />    </div>    <p>%r [%t] -%l %p %d{yyyy-MM-dd HH:mm:ss} %n</p>    <p>显示如下:</p>    <p>3 [main] -org.impl.Log4jDemo.main(Log4jDemo.java:10) ERROR 2012-01-11 17:11:37</p>    <p> </p>    <p>3表示所花时间;</p>    <p>[main]表示线程;</p>    <p>org.impl.Log4jDemo.main(Log4jDemo.java:10) 表示   %l   ;</p>    <p>ERROR表示%p;</p>    <p> </p>    <p> </p>    <p><br />  </p>    <p> </p>