Log4j 日志整理

作者: 咖啡机an | 来源:发表于2018-07-05 11:02 被阅读0次

1.配置的内容

1.1 根目录(日志级别和输出的目的地)

语法:log4j.rootLogger = [ level ] , appenderName, appenderName, …

建议的日志优先级:  ERROR > WARN > INFO > DEBUG 例如配置为INFO时,只有优先级大于等于INFO的才会输出,此时DEBUG不会输出。
全部的级别为 OFF 、 FATAL 、 ERROR 、 WARN 、 INFO 、 DEBUG 、 ALL 
输出的目的地(appenderName):控制台、文件等

1.2 目的地(Appender)

语法:log4j.appender.appenderName = fully.qualified.name.of.appender.class

Log4j 提供的 appender 
org.apache.log4j.ConsoleAppender (控制台)
org.apache.log4j.FileAppender (文件)
org.apache.log4j.DailyRollingFileAppender (每天产生一个日志文件)
org.apache.log4j.RollingFileAppender (文件大小到达指定尺寸的时候产生一个新的文件 MaxFileSize=100KB:)
org.apache.log4j.WriterAppender (将日志信息以流格式发送到任意指定的地方)

1.3 输出样式 (Layout)

语法:log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class

Log4j 提供的Layout
org.apache.log4j.HTMLLayout (以 HTML 表格形式布局),
org.apache.log4j.PatternLayout (可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout (包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout (包含日志产生的时间、线程、类别等等信息)

类似 C 语言中的 printf 函数格式化日志信息,打印参数:

%m 输出代码中指定的消息
%p 输出优先级,即 DEBUG , INFO , WARN , ERROR , FATAL
%r 输出自应用启动到输出该 log 信息耗费的毫秒数
%c 输出所属的类目,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符, Windows 平台为 “rn” , Unix 平台为 “n”
%d 输出日志时间点的日期或时间,默认格式为 ISO8601 ,也可以在其后指定格式,比如: %d{yyy MMM dd HH:mm:ss,SSS} ,输出类似: 2002 年 10 月 18 日 22 : 10 : 28 , 921
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例: Testlog4.main(TestLog4.java:10)
控制其最小宽度、最大宽度、和文本的对齐:
%20c :指定输出 category 的名称,最小的宽度是 20 ,如果 category 的名称小于 20 的话,默认的情况下右对齐。
%-20c: 指定输出 category 的名称,最小的宽度是 20 ,如果 category 的名称小于 20 的话, "-" 号指定左对齐。
%.30c: 指定输出 category 的名称,最大的宽度是 30 ,如果 category 的名称大于 30 的话,就会将左边多出的字符截掉,但小于 30 的话也不会有空格。
%20.30c: 如果 category 的名称小于 20 就补空格,并且右对齐,如果其名称长于 30 字符,就从左边交字符截掉。

2.配置实例

### set log levels ###
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 =  %d{ABSOLUTE} %5p %c{ 1 }:%L - %m%n
### 输出到日志文件 ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.DatePattern='.'yyyy-MM-dd
log4j.appender.D.File = logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG ## 输出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
### 保存异常信息到单独文件 ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = logs/error.log ## 异常日志文件名
log4j.appender.D.Append = true
log4j.appender.D.Threshold = ERROR ## 只输出ERROR级别以上的日志!!!
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

3.使用

#xml配置
  <context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>classpath:/config/log4j.properties</param-value>
  </context-param>
  <listener id="log4jConfigListener">
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
  </listener>
#类中的使用
 private static final Logger logger = Logger.getLogger(ClassName.class);
 logger.info("删除");

4.配置特定的包的等级

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

5.多环境配置

#tomcat启动参数配置 若自定义的文件名为log4j-debug.properties则配置启动参数为
-Denv=debug
#web.xml修改 
<context-param>  
    <param-name>log4jConfigLocation</param-name>  
    <param-value>/WEB-INF/classes/log4j-${env}.properties</param-value>  
</context-param>  

6.分级输出到日志一个级别一个日志

#重新DailyRollingFileAppender的isAsSevereAsThreshold方法
public class LogFileAppender extends DailyRollingFileAppender {
    @Override
    public boolean isAsSevereAsThreshold(Priority priority) {
        return this.getThreshold().equals(priority);
    }
}
#配置修改为log4j.appender.I=cn.com.scooper.hitms.rest.config.LogFileAppender

相关文章

  • Netty源码分析-08 Netty的日志

    8.1 Java的日志系统 java领域存在多种日志框架,目前常用的日志框架包括Log4j,Log4j 2,Com...

  • Mybatis日志级别

    1.1 log4j简介 log4j是Apache提供的一款记录日志的工具 log4j既可以将日志信息打印在控制台,...

  • log4j随笔

    log4j 一 简介: log4j其实就是提供一套日志记录的工具, 可以根据配置文件, 生成不同的日志效果 日志的...

  • java日志框架log4j的使用

    log4j 简介 Log4j由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式。日志...

  • Log4j 日志整理

    1.配置的内容 1.1 根目录(日志级别和输出的目的地) 语法:log4j.rootLogger = [ leve...

  • log4j详细介绍

    log4j是什么 *Apache的开源项目log4j是一个功能强大的日志组件(框架),提供方便的日志记录。 日志的...

  • log4j日志相对路径,Tomcat(第三方和Springboo

    关于Log4j日志相对路径的配置请看:log4j 产生的日志位置设置和catalina.home、catalina...

  • log4j和logback区别

    在java世界里, 日志框架通常有log4j 和slf4j, 而日志实现常用有log4j和logback, 通常情...

  • Log4j日志实例的继承与覆盖

    一、日志实例 log4j核心类图 创建Logger实例: 使用log4j的日志功能时,首先需要创建一个Logger...

  • #30天专注成长计划# day23 Log4j输出日志格式

    Log4j输出日志格式 Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下: - ...

网友评论

    本文标题:Log4j 日志整理

    本文链接:https://www.haomeiwen.com/subject/uavuuftx.html