中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Java > 第三方类库
使用log4j
作者:未知 时间:2005-07-24 21:26 出处:JR 责编:chinaitpower
              摘要:使用log4j

一 配置


  两种情况,一是在Web Application 中,二是在一般的Application中。

1)   在Web Application 中使用log4j

第一步 配置log4j配置文件
=========================
# Set root logger level to DEBUG and its only appender to A1
#log4j中有五级logger
#FATAL0
#ERROR3
#WARN4
#INFO6
#DEBUG7
log4j.rootLogger=DEBUG, A1
# A1 is set to be a ConsoleAppender.
#log4j中Appender有几层
#ConsoleAppender输出到控制台
log4j.appender.A1=org.apache.log4j.ConsoleAppender
# A1 uses PatternLayout.
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
#输出格式 具体查看log4j javadoc org.apache.log4j.PatternLayout
#d 时间 ....
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

================================另外一种配置================================
log4j.rootLogger=debug, stdout, R

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
#R 输出到文件
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=example.log

log4j.appender.R.MaxFileSize=100KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=1

log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n

第二步:写启动的Servlet

  1. import org.apache.log4j.PropertyConfigurator ;
  2. import org.apache.log4j.Logger ;
  3. import org.apache.log4j.Level ;
  4. public class InitServlet extends HttpServlet {
  5. public void init() {
  6.     ServletContext sct = getServletContext();
  7.     String prefix = sct.getRealPath("/");
  8.     //log4j 配置文件存放目录
  9.     System.out.println("[....Log4j]: The Root Path: " + prefix);
  10.     System.out.println("[....Log4j]: InitServlet init start...");
  11.     String file = getInitParameter("log4j");
  12.     //log4j 配置文件
  13.     if (file != null) {
  14.         PropertyConfigurator.configure(prefix + file);
  15.         //根据配置初始化log4j
  16.     }
  17.     
  18.     System.out.println("[....Log4j]: InitServlet Init Sucess...");
  19. }
  20. public void doGet(HttpServletRequest req, HttpServletResponse res) {
  21. }
  22. public void doPost(HttpServletRequest req, HttpServletResponse res) {
  23. }
  24. }


2) 在一般的IDE中使用log4j,因为使用log4j需要做一些初始化,在Web Application
中这一部分初始化是有AppServer 启动是加载的。在IDE中,则我们在使用log4j
之前需要自己配置一下。
如下文件:
  1. public final class Lo4jTest {
  2. private static String CLASS_NAME = "com.bingo.test.Lo4jTest";
  3. private static Logger log = Logger.getLogger(CLASS_NAME);
  4. //在Web Application 中下面的pattern是在log4j的配置文件中配置的。
  5. //现在我们手动配置
  6. private static String pattern="%-4r [%-t] [%p] [%c] [%x] - [%m]%n";
  7. private static String pattern2="%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n";
  8. //设置输出层
  9. //
  10. private static ConsoleAppender consAppender =
  11. new ConsoleAppender(
  12. new PatternLayout(pattern2));
  13. public static void main(String[] args) {
  14. //配置log4j
  15. BasicConfigurator.configure(consAppender);
  16. // void configure(Appender appender);
  17. // void configure();
  18. //配置时log4j提供了两种方式
  19. //后一种比较简单,输出的信息不够详细
  20. //我们可以使用前一种输出我们希望的格式
  21. log.debug("Log4j Debug.");
  22. log.error("Log4j Error.");
  23. log.info("Log4j Info.");
  24. log.fatal("Log4j Fatal.");
  25. }
  26. }

//使用pattern2上面的输出结果如下
2002-08-30 13:49:09 [com.bingo.test.Lo4jTest]-[DEBUG] Log4j Debug.
2002-08-30 13:49:09 [com.bingo.test.Lo4jTest]-[ERROR] Log4j Error.
2002-08-30 13:49:09 [com.bingo.test.Lo4jTest]-[INFO] Log4j Info.
2002-08-30 13:49:09 [com.bingo.test.Lo4jTest]-[FATAL] Log4j Fatal.
//假如我们使用pattern输出如下:
0 [main] [DEBUG] [com.bingo.test.Lo4jTest] [] - [Log4j Debug.]
0 [main] [ERROR] [com.bingo.test.Lo4jTest] [] - [Log4j Error.]
0 [main] [INFO] [com.bingo.test.Lo4jTest] [] - [Log4j Info.]
0 [main] [FATAL] [com.bingo.test.Lo4jTest] [] - [Log4j Fatal.]


二  使用log4j


在实际使用过程中其实非常简单

1:)如下定义log,在log4j1.2以前使用Category,log4j1.2以后使用Logger代替
  1. private static String CLASS_NAME = "com.bingo.test.Lo4jTest";
  2. //log4j1.2
  3. private static Logger log = Logger.getLogger(CLASS_NAME);
  4. //lo4j1.2以前
  5. private static Category log =Category.getInstance(CLASS_NAME);
  6. //取得一个Category or Logger有几种方式,根据自己需要使用


2:)写日志
  1. log.debug("Log4j Debug.");
  2. log.error("Log4j Error.");
  3. log.info("Log4j Info.");
  4. log.fatal("Log4j Fatal.");
  5. //void debug(Object message)
  6.   //Log a message object with the DEBUG level.
  7.   //void debug(Object message, Throwable t)
  8.   //Log a message object with the DEBUG level including the
  9.   //stack trace of the Throwable t passed as parameter.

三:注意事项


1:在具体使用中注意不同的信息使用不同的log方式,选择debug,error,
info,fatal中的一种,以后可以根据需要屏蔽部分输出
2:开发过程中尽量输出到控制台,运行过程中则修改配置使其输出到文件.
3:定义log尽量使用文件名作为参数,这样容易查找错误. 
 
 
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有