zoukankan      html  css  js  c++  java
  • log4j笔记


    A.日志的作用:

     1.记录程序运行时的出错信息,便于软件开发人员分析错误的原因,修正bug;
     2.充当集成开发环境中的调试器的作用,向文件或控制台打印代码的调试信息;
     3.监视程序运行的状况,周期性地记录到文件或数据库中,以便日后进行统计分析;

    B.log4j的主要组件:

     1.Logger;---日志记录器
     2.Appender;---控制日志在什么地方输出
     3.Layout;---控制日志以什么样的格式输出

    B.1.Logger组件:

     1.记录器分为根记录器和自记录器,根记录器为与记录器层次中的顶部,它永远存
     在,且不能通过名字检索或引用,可以通过调用org.apache.log4j.Logger类的静态
     方法getRootLogger()获取,而其他的子记录器则通过org.apache.log4j.Logger类的
     静态方法getLogger(String name)来实例化。

     2.记录器有一个重要的属性---日志级别
       a.日志级别分为5个级别,他们由小到大一次为:DEBUG<INFO<WARN<ERROR<FATAL,
       他们在org.apache.log4j.Level类中定义,是枚举类型。
       b.不同的日志具有不同的级别。
       c.1. 如果logger的级别为DEBUG,则logger会记录DEBUG级别和DEBUG级别以上的日志信息
       c.2. 如果logger的级别为INFO,则logger会记录INFO级别和INFO级别以上的日志信息,不会
       记录INFO级别以下的日志信息
       c.3. 依次类推.....

     3.Logger记录器的常用方法如下:
       a.public static Logger getRootLogger();
       b.public static Logger getLogger(String name);

       c.public void debug(Ojbect message);
       d.public void info(Ojbect message);
       e.public void warn(Ojbect message);
       e.public void error(Ojbect message);
       f.public void fatal(Ojbect message);

    B.2.Appender组件:

     1.日志输出目的地如下:
       a.输出到控制台;
       b.文件;
       c.GUI组建;
       d.远程嵌套接字服务器;
       e.JMS;
       f.NT事件记录器;
       g.UNIX Syslog守护进程;

       注意:1.我们常用的两种为:输出到控制台和文件,同时日志信息可以被异步地输出;


      2.一个记录器可以有多个Appender,通过调用Logger的addAppender()方法来
      增加Appender;

     2.与上对应的Appender如下:

       //输出到控制台;
       a.org.apache.log4j.ConsoleAppender;
       //输出目的地为文件
       b.org.apache.log4j.FileAppender;
       //按照用户指定的时间或日期频率滚动产生日志文件
       c.org.apache.log4j.DailyRollingAppender;
       //当文件达到一定的尺寸是,备份日志文件;
       d.org.apache.log4j.RollingFileAppender;

       注意:每个记录器都有一个继承标记,用于决定记录器是否可以继承其父记录器的
       Appender,这个标记可以通过调用Logger类的setAdditivity(boolean additive)方
       法来设置,默认情况下,这个标记被设置为true。需要注意的是,对于Appender的
       继承,是一种叠加性继承,而且后代记录器之继承其父记录器的Appender,而不考
       虑更远的祖先的情况

    B.3.Layout组件:
     
     1.一个Appender只能有一个Layout,主要有以下几种Layout:

          //SimpleLayout的输出由日志的级别+"-"+日志消息组成。例如DEBUG-Hello world.
       a. org.apache.log4j.SimpleLayout;

          //以HTML表格的方式输出日志信息
       b. org.apache.log4j.HTMLLayout;
         
          //XMLLayout的输出有一系列在log4j.dtd中定义的<log4j:event>元素组成的.
       c. org.apache.log4j.XMLLayout;

          // TTCCLayout的输出由时间(time)、线程(thread)、类别(category)和
          嵌套的诊断上下文(context)信息组成,TTCCLayou的命名有这四个单词的
          首字母组成的.
       d. org.apache.log4j.TTCCLayout;

                 //PatternLayout提供了和C语言的printf()方法一样的灵活性,程序员可以按照
          一定的转换模式指定日志的信息输出格式。
       e. org.apache.log4j.PatternLayout;
     
     2.常用转换符和其作用

        转换字符   作用
            %c   用于输出日志事件的类别(category)
            %d   用户输出日志事件的日期如:%d{HH:mm:ss,SSS}
            %p   用于输出日志事件的级别
            %t   用于输出日志事件的线程名字
            %%   序列"%%",将输出一个单独的%
            %m   日志消息
            %M   日志输出的方法
            %n   用于换行
        [%-5p]或%p   用于输出日志事件的级别
                    .......


    C.log4j的应用:

     1.读取配置文件的方式:
       a.BasicConfiguration.configure()//根记录器
       b.PropertyConfigurator.configure(String configFileName)//key="值" (java中常用)
       c.DOMConfigurator.configure(String filename)

     2.配置Logger组件:

       a.配置根记录器
         log4j.rootLogger=[level][appenderName1][appenderName2]....
         其中level指定日志级别,可以为(OFF,DEBUG,INFO,WARN,ERROR,FATAL,ALL)
         可以指定多个Appender
       b.配置其他记录器
         log4j.logger.loggerName=[level][appenderName1][appenderName2]....

     3.配置Appender组件:
       a. log4j.appender.appenderName=完整的类名
       b. log4j.appender.appenderName.option1=value1;
          ...
       c. log4j.appender.appenderName.optionN=valueN;

     4.配置Layout组件:
       a. log4j.appender.appenderName.layout=完整的类名
       b. log4j.appender.appenderName.layout.option1=value1
          ...
       c. log4j.appender.appendername.layout.optionN=valueN


    D.log4j配置文件的示例:

     1.log4j_1.properties
       #根记录器的日志级别是ERROR,在这个级别以下的日志信息见被忽略。
       #为根记录器指定名字为console的Appender
       log4j.rootLogger=ERROR,console

       #定义bookstoreLogger记录器,没有设置日志级别,将继承根记录器的级别。
       #为bookstoreLogger记录器指定名字为file的Appender,bookstoreLogger
       记录器还将继承根记录的Appender.
       log4j.logger.bookstoreLogger=,file

       #定义一个名字为console的Appender,它的类型是ConsoleAppender。
       log4j.appender.console=org.apache.log4j.ConsoleAppender
       #console Appender 使用的Layout是SimpleLayout。
       log4j.appender.console.layout=org.apache.log4j.SimpleLayout

       #定义一个名字为file的Appender,它的类型是FileAppender。
       log4j.appender.file=org.apache.log4j.FileAppender
       #指定file Appender输出的日志文件的名字和存放路径.
       log4j.appender.file.File=F:JSPLession/ch19/WEB-INF/ch19.log

       #file Appender 使用的Layout是PatternLayout.
       log4j.appender.file.layout=org.apache.log4j.PatternLayout
       #指定日志信息的输出格式
       log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd  HH:mm:ss}
       [%c]-[%-5p]%m%n%n


      2.log4j_2.properties
        log4j.rootLogger=EEROR,console
        log4j.logger.bookstoreLogger=,file

        log4j.additivity.bookstoreLogger=false

               log4j.appender.console=org.apache.log4j.ConsoleAppender
        log4j.appender.console.layout=org.apache.log4j.SimpleLayout

        #log4j.appender.file=org.apache.log4j.FileAppender
        #log4j.appender.file.File=F:JSPLession/ch19/WEB-INF/ch19.log

        #定义一个名字为file的Appender,它的类型是RollingFileAppender。
        log4j.appender.file=org.apache.log4j.RollingFileAppender
        #设置最大文件尺寸为1MB,当日志文件大小达到1MB是,开始备份到备份文件中。
        log4j.appender.file.MaxFileSize=1MB
        #设置备份文件的最大数目为2个文件.
        log4j.appender.file.MaxBackupIndex=2
        #指定file Appender输出的日志文件的名字和存放路径.
        log4j.appender.file.File=F:JSPLession/ch19/WEB-INF/ch19roll.log

        #file Appender 使用的Layout是PatternLayout.
        log4j.appender.file.layout=org.apache.log4j.PatternLayout
        #指定日志信息的输出格式
        log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}
        [%c]-[%-5p]%m%n%n


    E.结论性的东西:
     1.
     logger.setLevel(Level.ALL);//输出5条日志信息
     logger.setLevel(Level.DEBUG);//输出5条日志信息
     logger.setLevel(Level.INFO);//输出4条日志信息
     logger.setLevel(Level.WARN);//输出3条日志信息
     logger.setLevel(Level.ERROR);//输出2条日志信息
     logger.setLevel(Level.FATAL);//输出1条日志信息
     logger.setLevel(Level.OFF);//输出0条日志信息

  • 相关阅读:
    eventlet设计模式
    backbone Model调用save方法的时候提交方式
    django form POST方法提交表达
    wordpress简单搭建个人博客
    docker-py环境配置
    EditPlus安装与注册
    xmind安装和升级
    统计学习的相关定义
    LaTeX初识
    flask_mail发送邮件
  • 原文地址:https://www.cnblogs.com/yyuuaannllii/p/3775255.html
Copyright © 2011-2022 走看看