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 )

四:实践使用

原文地址:https://www.cnblogs.com/chunxiaozhang/p/12659240.html