log4j使用大全

一:配置

A:)在Web Application 中使用log4j
Step 1:
配置log4j配置文件

  1. =========================
  2. # Set root logger level to DEBUG and its only appender to A1
  3. #log4j中有五级logger
  4. #FATAL0
  5. #ERROR3
  6. #WARN4
  7. #INFO6
  8. #DEBUG7
  9. log4j.rootLogger=DEBUG, A1
  10. # A1 is set to be a ConsoleAppender.
  11. #log4j中Appender有几层
  12. #ConsoleAppender输出到控制台
  13. log4j.appender.A1=org.apache.log4j.ConsoleAppender
  14. # A1 uses PatternLayout.
  15. log4j.appender.A1.layout=org.apache.log4j.PatternLayout
  16. #输出格式 具体查看log4j javadoc org.apache.log4j.PatternLayout
  17. #d 时间 ....
  18. log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
  1. ================================另外一种配置
  2. log4j.rootLogger=debug, stdout, R
  3. log4j.appender.stdout=org.apache.log4j.ConsoleAppender
  4. log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
  5. # Pattern to output the caller's file name and line number.
  6. log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
  7. #R 输出到文件
  8. log4j.appender.R=org.apache.log4j.RollingFileAppender
  9. log4j.appender.R.File=example.log
  10. log4j.appender.R.MaxFileSize=100KB
  11. # Keep one backup file
  12. log4j.appender.R.MaxBackupIndex=1
  13. log4j.appender.R.layout=org.apache.log4j.PatternLayout
  14. log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n

Step 2:写启动的Servlet

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

B:在一般的IDE中使用log4j,因为使用log4j需要做一些初始化,在Web Application
中这一部分初始化是有AppServer 启动是加载的。在IDE中,则我们在使用log4j
之前需要自己配置一下。

  1. public final class Lo4jTest 
  2. {
  3.     private static String CLASS_NAME = "com.bingo.test.Lo4jTest";
  4.     private static Logger log = Logger.getLogger(CLASS_NAME);
  5.     //在Web Application 中下面的pattern是在log4j的配置文件中配置的。
  6.     //现在我们手动配置
  7.     private static String pattern="%-4r [%-t] [%p] [%c] [%x] - [%m]%n";
  8.     private static String pattern2="%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n";
  9.     //设置输出层
  10.     //
  11.     private static ConsoleAppender consAppender =
  12.     new ConsoleAppender(
  13.     new PatternLayout(pattern2));
  14.     public static void main(String[] args) 
  15.     {
  16.         //配置log4j
  17.         BasicConfigurator.configure(consAppender);
  18.         // void configure(Appender appender);
  19.         // void configure();
  20.         //配置时log4j提供了两种方式
  21.         //后一种比较简单,输出的信息不够详细
  22.         //我们可以使用前一种输出我们希望的格式
  23.         log.debug("Log4j Debug.");
  24.         log.error("Log4j Error.");
  25.         log.info("Log4j Info.");
  26.         log.fatal("Log4j Fatal.");
  27.     }
  28. }
//使用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代替
private static String CLASS_NAME = "com.bingo.test.Lo4jTest";
//log4j1.2
private static Logger log = Logger.getLogger(CLASS_NAME);
//lo4j1.2以前
private static Category log =Category.getInstance(CLASS_NAME);
//取得一个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尽量使用文件名作为参数,这样容易查找错误.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值