log4j(日志记录器)

来源:互联网 发布:高中数学刷题软件 编辑:程序博客网 时间:2024/06/01 07:53

A.目的

1.输出调试信息

2.记录程序运行跟踪信息

3.记录错误信息

 

B.组成

1.记录器logger
   a.记录器
      a1.根记录器 :log4j.rootLogger=级别,追加器1,追加器2...
      a2.命名记录器:名称:com.learn.service  用包名称

                              log4j.logger.com.learn.service=级别,追加器1,追加器2...

   b.日志级别: ALL<TRACE<DEBUG<INFO<WARN<ERROR<FATAL<OFF

                      单词不区分大小写
   c.继承与附加关系:默认子记录器会继承上一级记录器的追加器和级别

2.追加器appender:

   追加器(目的地)AppName

   log4j.appender.AppName=org.apache.log4j.ConsoleAppender

   a.控制台:

     org.apache.log4j.ConsoleAppender

       log4j.appender.C=org.apache.log4j.ConsoleAppender

   b.文件:

       org.apache.log4j.FileAppender
       log4j.appender.F=org.apache.log4j.FileAppender
       log4j.appender.F.File=example.log
       log4j.appender.F.Append=true
   c.滚动文件:

       org.apache.log4j.RollingFileAppender
       log4j.appender.R=org.apache.log4j.RollingFileAppender
       log4j.appender.R.File=example.log
       log4j.appender.R.MaxFileSize=100KB
       log4j.appender.R.MaxBackupIndex=1
   d.每日滚动文件:

       org.apache.log4j.DailyRollingFileAppender
       log4j.appender.DR=org.apache.log4j.DailyRollingFileAppender
       log4j.appender.DR.DatePattern='.'yyyy-MM-dd
       log4j.appender.DR.File=C://logs/log.txt
       log4j.appender.DR.Append=true


   e.数据库JDBC:

       org.apache.log4j.jdbc.JDBCAppender

   f.网络:

      org.apache.log4j.net.JMSAppender
      org.apache.log4j.net.SMTPAppender
      org.apache.log4j.net.SocketAppender
   g.事件日志:

       org.apache.log4j.nt.NTEventLogAppender

 

3.格式化layout:

   log4j.appender.A1.layout=org.apache.log4j.PatternLayout
   log4j.appender.A1.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n

  a. PatternLayout:
org.apache.log4j.PatternLayout(可以灵活地指定布局模式)
    a1. ConversionPattern:

        如果使用pattern布局就要指定的打印信息的具体格式ConversionPattern打印参数

        如下:

        %m输出代码中指定的消息;

        %M输出打印该条日志的方法名;

        %p输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL;

        %r输出自应用启动到输出该log信息耗费的毫秒数;

        %c输出所属的类目,通常就是所在类的全名;

        %t输出产生该日志事件的线程名;

        %n输出一个回车换行符,Windows平台为"rn”,Unix平台为"n”;

        %d输出日志时间点的日期或时间,默认格式为ISO8601,

            也可以在其后指定格式,比如:%d{yyyy-MM-ddHH:mm:ss,SSS}

        %l输出日志事件的发生位置,及在代码中的行数;
        //例子

        %10c %-10M %m %n

        %10c  显示类名称,10个字符宽,右对齐
        %-10M 显示方法名,10个字符宽,左对齐(-)

  b. HTMLLayout:org.apache.log4j.HTMLLayout 以HTML表格形式布局
  c. SimpleLayout:org.apache.log4j.SimpleLayout 包含日志信息的级别和信息字符串
  d. TTCCLayout:org.apache.log4j.TTCCLayout 包含日志产生的时间线程类别等信息

 

C.使用

1.配置文件
 properties
 xml

2.程序代码
 a.加载配置文件
   a1.默认加载:将log4j.properties文件放在根目录下即可
   a2.属性文件:PropertyConfigurator.configure("配置文件名称");
   a3.XML文件:DOMConfigurator.configure("配置文件名称");
 b.获得日志记录器:

    方式一:
     Logger logger = Logger.getLogger(UserDAO.class);

    方式二:

     Logger logger = Logger.getLogger("loggerName");

 c.指定继承附加属性:logger.setAdditivity(false);

 d.相应位置写日志:

   方式一
    public void log(Level l, Object message);

   方式二
    public void trace(Object message);
    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);


   //例子
    logger.debug("debug->name:" + user.getName() + "pass:" + user.getPass());

   // 业务--加密
    user.setPass(user.getPass() + "!");
    logger.info("info->name:" + user.getName() + "pass:" + user.getPass());

    try {
    dao.insert(user);
    } catch (Exception e) {
    logger.error(e.getMessage());
    }

 e.性能优化:

   先判断一下在输出日志

   if(logger.isDebugEnabled() ){
        logger.debug("日志信息");
    }

 

 

0 0
原创粉丝点击