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条日志信息

  • 相关阅读:
    小波变换的引入,通俗易懂
    Leetcode 437. Path Sum III
    Leetcode 113. Path Sum II
    Leetcode 112 Path Sum
    Leetcode 520 Detect Capital
    Leetcode 443 String Compression
    Leetcode 38 Count and Say
    python中的生成器(generator)总结
    python的random模块及加权随机算法的python实现
    leetcode 24. Swap Nodes in Pairs(链表)
  • 原文地址:https://www.cnblogs.com/yyuuaannllii/p/3775255.html
Copyright © 2011-2022 走看看