zoukankan      html  css  js  c++  java
  • Log4j_java日志使用

    一:log4j简介

       1、简介

    日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录。在apache网站:jakarta.apache.org/log4j 可以免费下载到Log4j最新版本的软件包。

      2、log4j与log4j2的区别(本文使用log4j)

    配置文件类型
        log4j通过.properties作为主配置文件,而log4j 2则弃用了这种方式,采用.xml、.json、.jsn方式来做,可能这也是技术发展的一个必然性,毕竟properties文件的可阅读性真的是有点差。
    
    核心JAR包
        log4j只需要引入一个jar包即可,
        <dependency>
         <groupId>log4j</groupId>
         <artifactId>log4j</artifactId>
         <version>1.2.17</version>
        </dependency>
        
        log4j 2则是需要2个核心
        <dependency>
         <groupId>org.apache.logging.log4j</groupId>
         <artifactId>log4j-core</artifactId>
         <version>2.5</version>
        </dependency>
        <dependency>
         <groupId>org.apache.logging.log4j</groupId>
         <artifactId>log4j-api</artifactId>
         <version>2.5</version>
        </dependency>

    二:配置详解

    ### 设置日志界别:debug,三个appder:stdout、D、E###
    log4j.rootLogger = debug,stdout,D,E
    
    ### 输出信息到控制抬 ###
    log4j.appender.stdout = org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.Target = System.out
    log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
    
    ### 输出DEBUG级别以上的日志到=/log_log ###
    log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
    log4j.appender.D.File = /log_log
    log4j.appender.D.Append = true
    log4j.appender.logfile.DataPattern='.'yyyy-MM-dd--归档日志文件名,加File形成log_log.2020-02-09
    log4j.appender.logfile.encoding=UTF-8
    log4j.appender.D.Threshold = DEBUG 
    log4j.appender.D.layout = org.apache.log4j.PatternLayout
    log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
    
    ### 输出ERROR级别以上的日志到=/error_log ###
    log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
    log4j.appender.E.File =/error_log
    log4j.appender.E.Append = true
    log4j.appender.logfile.DataPattern='.'yyyy-MM-dd--归档日志文件名,加File形成err_log.2020-02-09
    log4j.appender.logfile.encoding=UTF-8
    log4j.appender.E.Threshold = ERROR 
    log4j.appender.E.layout = org.apache.log4j.PatternLayout
    log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

    三:其他说明

      1、日志级别

    级别说明
        DEBUG        输出调试信息;指出细粒度信息事件对调试应用程序是非常有帮助的。 
        INFO         输出提示信息;消息在粗粒度级别上突出强调应用程序的运行过程。 
        WARN         输出警告信息;表明会出现潜在错误的情形。 
        ERROR        输出错误信息;指出虽然发生错误事件,但仍然不影响系统的继续运行。 
        FATAL        输出致命错误;指出每个严重的错误事件将会导致应用程序的退出。 
        ALL level    打开所有日志记录开关;是最低等级的,用于打开所有日志记录。 
        OFF level    关闭所有日志记录开关;是最高等级的,用于关闭所有日志记录。
        
    级别等级
        OFF(关闭)>FATAL(致命的)>ERROR(错误)>WARN(警告)>INFO(信息)>DEBUG(调试)>ALL(所有)

      2、关键解析

    Appender--为日志输出目的地
        org.apache.log4j.ConsoleAppender(控制台)
        org.apache.log4j.FileAppender(文件)
        org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
        org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
        org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
        
    appder选项--appder选项配置
        Threshold=DEBUG                                                    指定日志消息的输出最低层次
        ImmediateFlush=true                                                默认值是true,意谓着所有的消息都会被立即输出
        Target=System.err                                                  默认情况下是:System.out,指定输出控制台
        Threshold=DEBUF                                                    指定日志消息的输出最低层次
        File=mylog.txt                                                     指定消息输出到mylog.txt文件,
        Append=false                                                       默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容
        MaxFileSize=100KB                                                  后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件
        MaxBackupIndex=2                                                   指定可以产生的滚动文件的最大数
        ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n       自定义输出格式
    Layout
    --日志输出格式 org.apache.log4j.HTMLLayout(以HTML表格形式布局) org.apache.log4j.PatternLayout(可以灵活地指定布局模式) org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串) org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息) 打印参数--Log4J采用类似C语言中的printf函数的打印格式格式化日志信息   %m 输出代码中指定的消息   %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL   %r 输出自应用启动到输出该log信息耗费的毫秒数   %c 输出所属的类目,通常就是所在类的全名   %t 输出产生该日志事件的线程名   %n 输出一个回车换行符,Windows平台为“ ”,Unix平台为“ ”   %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy_MMM_dd HH:mm:ss:SSS},输出类似:2002_10_18 22:10:28:921   %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java: 10 )

    四:实践使用

  • 相关阅读:
    LCA算法总结
    【福利】论机房如何关闭方正软件保护卡
    codevs 2190 有理逼近
    用C语言的rand()和srand()产生伪随机数的方法总结
    float,double等精度丢失问题 float,double内存表示
    #incldue<cctype>函数系列
    poj 2348 Euclid's Game 题解
    poj 2240 Arbitrage 题解
    洛谷 p1352 没有上司的舞会 题解
    BZOJ 1093 最大半连通子图 题解
  • 原文地址:https://www.cnblogs.com/chunxiaozhang/p/12659240.html
Copyright © 2011-2022 走看看