zoukankan      html  css  js  c++  java
  • Log4j作用

    Log4j笔记

    一、log4j的作用

    开发阶段发现程序的问题 , 排除错误 , 产品阶段 , 可以记录系统运行的一些状态信息 , 程序运行的状态 ;

     log4j是目前最流行的java开源日志处理框架 , 是Apache的子项目 ; 

    二、log4j的主要组成部分

       loggers : 负责捕获记录信息 ;

         appenders : 负责发布日志信息 , 以不同的首选目的地 ;

         layouts : 负责格式化不同风格的日志信息 ;

    三、log4j级别

    ALL : 各级包括自定义级别 ;

    TRACE : 指定细粒度比DEBUG更低的信息事件 ;

    DEBUG : 调试级别 ;

    INFO : 表明消息在粗粒度级别上突出强调应用程序是非常有帮助的 , 也就是输出一些提示信息 ;

    WARN : 输出潜在的有可能出错的情形 , 也就是输出警告信息 ;

    ERROR : 指出发生的不影响系统继续运行的错误信息 ;

    FATAL : 指出严重的错误 , 这些错误将会导致系统终止运行 ;

    OFF : 为最高级别 , 用于关闭所有日志信息的输出 ;

    四、文件配置

    1、配置根Logger , 语法为 :

    log4j.rootLogger = [ level ] , appenderName , appenderName ……

    注意 :

    1. 虽然罗列了很多级别 , 但log4j推荐只使用四个级别 , 优先级从高到低分别是ERROR , WARN , INFO , DEBUG ; 
    2. appenderName指的是日志输出的地址 , 可以同时指定n个 ;

      2 . 配置日志输出的目的地Appender以及每个输出文件的各项属性 , 语法为 :

    log4j.appender.appenderName = fully.qualified.name.of.appender.class

         log4j.appender.appenderName.option1 = value1

         注意 : log4j中提供的appender有以下几种 :

              org.apache.log4j.ConsoleAppender(控制台) ;

              org.apache.log4j.FileAppender(文件) ;

              org.apache.log4j.DailyRollingFileAppender(按照一定的频度滚动产生日志记录文件 , 默认每天产生一个文件) ;

              org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件) ;

    org.apache.log4j.WriterAppender(将日志信息以流格式发送到指定的位置) ;

       3 . 配置日志信息的格式或者布局layout以及布局的各项属性 , 语法为 :

                log4j.appender.appenderName.layout = fully.qualified.name.of.appender.class

                log4j.appender.appenderName.layout.option1 = value

           注意 : log4j中提供的layout有以下几种 :

                  org.apache.log4j.HTMLLayout(以HTML表格形式布局) ; 

    org.apache.log4j.PatternLayout(可以灵活的指定布局模式 , 需要配置layout.ConversionPattern属性) ;

                  org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串) ; 

                     org.apache.log4j.TTCCLayout(包含日志产生的时间 , 线程 , 类别等等信息) ;

    五、配置选项

    1 . log4j.appender.appenderName.Threshold = error

            用法 : rootLogger里配置debug , 然后某个文件专门存储error以及更高级别的错误信息 , 那么就在这个配置这个文件的时候指定Threshold属性为error ;

         2 . log4j.appender.appenderName.ImmediateFlush=true

             用法 : 默认值是true , 意味着所有的消息都会被立即输出 , false则是不输出 ;

          3 . log4j.appender.appenderName.target=System.out

             用法 : 默认值为System.out , 输出到控制台 , 还可以取值System.err , 当做错误信息输出 , 输出的信息全部为红色 ;

          4 . log4j.appender.appenderName.File=logs/log.appenderName.txt

             用法 : 指定日志输出到指定位置 , 用的是相对于配置文件根目录的相对路径 ;

          5 . log4j.appender.appenderName.File.Append=true

             用法 : 默认值是true , 即将消息追加到指定文件中 , 如果取值为false , 则会覆盖之前的日志内容 ;

          6 . log4j.appender.appenderName.MaxFileSize=20MB

         用法 : 后缀可以是KB , MB , GB , 当日志文件的大小到达指定大小后 , 将会自动滚动 , 即将原来的内容移到fileName.1文件中 , 用记事本打开该文件即可看到原来的内容 , 改属性只能在 appender=org.apache.log4j.RollingFileAppender 时使用 ;

           7 . log4j.appender.appenderName.MaxBackupIndex=10

         用法 : 指定可以产生滚动文件的最大数量 , 与RollingFileAppender和MaxFileSize属性一起使用 , 当MaxBackupIndex=n的时候 , 最大日志存在数量为n+1 , 即log.txt , log.txt.1 , ... , log.txt.n , 当在服务器上运行的时候 , 如果对日志数量没有限制 , 那么随之时间的推移 , 日志文件会越来越多 , 占用的内存也将越来越多 , 直到占满整个盘 ;

           8 . log4j.appender.appenderName.DatePattern='.'yyyy-MM-dd

          用法 : 该属性在 log4j.appender.appenderName=org.apache.log4j.DailyRollingFileAppender 时使用 , DailyRollingFileAppender默认的频度是每天产生一个日志记录文件 , 可以在DatePattern属性值中指定其他的频度 , 常用的几个频度如下 :

             1 . '.'yyyy-MM : 每月产生一个日志记录文件 ;

             2 . '.'yyyy-ww : 每周产生一个日志记录文件 ;

             3 . '.'yyyy-MM-dd : 每天产生一个日志记录文件 ;

             4 . '.'yyyy-MM-dd-a : 每半天产生一个日志记录文件 ;

             5 . '.'yyyy-MM-dd-HH : 每小时产生一个日志记录文件 ;

             6 . '.'yyyy-MM-dd-HH-mm : 每分钟产生一个日志记录文件 ;

             注意 : 该属性指定值之后 , 将会按照指定的频度来生成日志记录文件 , 假设指定生成一个名为 log.txt 的文件 , 频度指定为每分钟产生一个日志记录文件 , 当达到指定频度后 , 会将log.txt文件中记录的之前的日志记录 , 重新写入一个名为 log.txt.yyyy-MM-dd-HH-mm的文件中 , 而此时 log.txt 文件中存放的是新生成的日志信息 , 该过程循环往复 ;

    六、ConversionPattern参数

    假设当前java文件名为Test , 所在包名为log4j :

     1 . %c : 显示当前logger空间全称 , 例如 : log4j.Test ;

        %c{层数} : 最内层的java文件为第一层 , 例如 : %c{1} , 显示为Test , 当层数大于实际存在的最大层数时 , 显示最大实际存在层数 ;

     2 . %10c : 若名字空间长度小于10 , 则在左边将欠缺的长度用空格补齐 , 该种情况为默认的右对齐方式 ;

    %-10c : 若名字空间长度小于10 , 则在右边将欠缺的长度用空格补齐 , 该种情况为默认的左对齐方式 ;

     3 . %.3c : 从空间名最右边开始显示指定的长度 , 超出该长度的部分将被截取 ;

     4 . %10.15c : 若空间名长度小于10 , 则左边将欠缺的长度用空格补齐 , 若长度超过15 , 则将多余部分截取 ;

    5 . %-10.15c : 若空间名长度小于10 , 则右边将欠缺的长度用空格补齐 , 若长度超过15 , 则将多余部分截取 ;

     6 . %d : 显示日志记录时间 , 默认时间格式为ISO8601定义的日期格式 ;

              %d{yyyy-MM-dd HH:mm:ss} : 按照指定的时间格式显示日期 ;

              %d{ABSOLUTE} : 22:15:30,076 ;

              %d{DATE} : 12 Oct 2018 22:15:30,076 ;

              %d{ISO8601} : 2018-07-20 22:23:30,076 ;

           7 . %F : 显示调用logger的源文件名 , 例如 : Test.java ;

        8 . %l : 输出日志事件的发生位置 , 包括类目名 , 发生的线程 , 以及在代码中的行数 , 例如 : log4j.log4jTest.main(log4jTest.java:40) ;

        9 : %m : 显示输出消息 ;

        10 . %M : 显示调用logger的方法名 ;

           11 . %n : 换行符 ;

           12 : %p : 显示该条目的优先级 ; 

           13 . %r : 显示从程序启动时到记录该条日志时已经经过的时间 , 单位毫秒 ;

           14 . %t : 显示产生该日志条目的线程名 ;

           15 . %x : 按NDC(Nested Diagnostic Context , 线程堆栈) : 顺序输出日志 ;

                  %X : 按MDC(Mapped Diagnostic Context , 线程映射表)输出日志 , 通常用于多个客户端连接同一个服务器 , 方便服务器区分是哪个客户端访问留下来的日志 ;

           16 . %% : 显示一个百分号 ;

    七、样例

    1. 输出到控制台

    A、指定日志的默认输出级别与输出端

    Log4j.rootlogger=DEBUG,Console

    B、控制台输出配置

    Log4j.appender.Console=org.apache.log4j.ConsoleAppender

    log4j.appender.Console.layout=org.apache.log4j.PatternLayout

    Log4j.appender.Console.layout.ConversionPattern=d% [%t] %-5p [%c] - %m%n

    C、指定类的配置

    log4j.logger.指定类=DEBUG

    2、输出到文件

      A、指定日志的默认输出级别与输出端

        Log4j.rootlogger=DEBUG,file

      B、控制台输出配置

        单个日志文件

        log4j.logger.cn.com.Test= DEBUG, test

        log4j.appender.file=org.apache.log4j.FileAppender

        log4j.appender.file.File=log/test.log

        log4j.appender.file.layout=org.apache.log4j.PatternLayout

        log4j.appender.file.layout.ConversionPattern=%d %p [%c] - %m%n

    定期日志文件

    log4j.appender.dailyFile=org.apache.log4j.DailyRollingFileAppender
          log4j.appender.dailyFile.Threshold=DEBUG
          log4j.appender.dailyFile.ImmediateFlush=true
          log4j.appender.dailyFile.Append=true
          log4j.appender.dailyFile.File=D:/logs/log.log4j
          log4j.appender.dailyFile.DatePattern='.'yyyy-MM-dd
    log4j.appender.dailyFile.layout=org.apache.log4j.PatternLayout
       log4j.appender.dailyFile.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m

      C、指定类的配置

        log4j.logger.指定类=DEBUG

  • 相关阅读:
    ADO.NET 之 二 yz
    ADO.NET 之 三 yz
    telerik的RadAutoCompleteBox控件学习完结 yz
    ADO.NET 之 三 2 yz
    ASP.NET 底层技术 一 yz
    telerik的RadAutoCompleteBox控件学习三 yz
    ASP.NET 之 自定义 异步HTTP处理程序 yz
    javascriptArray类型 二 yz
    telerik的RadAutoCompleteBox控件学习一 yz
    javascript——Array类型 yz
  • 原文地址:https://www.cnblogs.com/hello-top/p/13881234.html
Copyright © 2011-2022 走看看