log4j 的参数配置

在Log4j 1.x版本中,log4j.properties文件是配置日志系统的主要方式。这个文件包含了一系列的属性设置,用于定义日志的行为,包括日志级别、Appender(日志输出目的地)的配置、以及Appender的布局(Layout)等。下面是对这些参数的一些详细解读:

1. 根Logger(Root Logger)

log4j.rootLogger=LEVEL, APPENDER1, APPENDER2, ...
  • LEVEL:这是根Logger的日志级别。Log4j 1.x中支持的级别有TRACE、DEBUG、INFO、WARN、ERROR和FATAL。只有级别等于或高于这个级别的日志消息才会被处理。
  • APPENDER1, APPENDER2, ...:这些是通过逗号分隔的Appender名称列表,根Logger将把日志消息发送给这些Appender。Appender定义了日志消息的目的地,比如控制台、文件、远程服务器等。

2. Appender配置

Appender的配置通常包括Appender的类型、名称、目标(如文件名)、布局(Layout)等。

java 复制代码
# ConsoleAppender配置示例  
log4j.appender.A1=org.apache.log4j.ConsoleAppender  
log4j.appender.A1.Target=System.out  
log4j.appender.A1.layout=org.apache.log4j.PatternLayout  
log4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n  
  
# FileAppender配置示例  
log4j.appender.FILE=org.apache.log4j.FileAppender  
log4j.appender.FILE.File=logs/myapp.log  
log4j.appender.FILE.Append=true  
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout  
log4j.appender.FILE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
  • log4j.appender.A1(或log4j.appender.FILE):这定义了Appender的名称,后面所有的配置都将通过这个名称来引用这个Appender。
  • org.apache.log4j.ConsoleAppender(或org.apache.log4j.FileAppender):这指定了Appender的类型,即这个Appender是一个控制台Appender还是一个文件Appender。
  • log4j.appender.A1.Target=System.out:这是ConsoleAppender特有的属性,指定了输出目标,System.out是标准输出流,通常指向控制台。
  • log4j.appender.FILE.File:这是FileAppender特有的属性,指定了日志文件的路径和名称。
  • log4j.appender.FILE.Append=true:这也是FileAppender特有的属性,指定是否追加日志到文件末尾,true表示追加,false表示覆盖。
  • log4j.appender.A1.layout(或log4j.appender.FILE.layout):这指定了Appender的布局类型,PatternLayout是常用的布局类型,它允许你通过指定的模式来格式化日志消息。
  • log4j.appender.A1.layout.ConversionPattern(或log4j.appender.FILE.layout.ConversionPattern):这定义了PatternLayout的布局模式,用于格式化日志消息。模式字符串可以包含各种日志事件的格式化信息,如日期、日志级别、日志消息等。

3. 日志级别与Appender的关系

除了根Logger可以指定日志级别外,你也可以为特定的Logger(而不是根Logger)指定级别,并且这些Logger可以引用不同的Appender。这允许你对不同的包或类进行细粒度的日志控制。

4. 关于log4j.appender.FILE.layout.ConversionPattern的解读

log4j.appender.FILE.layout.ConversionPattern 是 Log4j 1.x 配置中用于定义文件Appender(FileAppender)输出日志消息格式的重要参数。它指定了一个模式字符串(Pattern String),该字符串决定了日志消息在文件中被格式化的方式。这个模式字符串可以包含多个格式化选项,用于在日志消息中插入各种信息,如时间戳、日志级别、日志记录器的名称、日志消息本身等。

下面是对 log4j.appender.FILE.layout.ConversionPattern 中一些常用格式化选项的解读:

  • %d{yyyy-MM-dd HH:mm:ss}:这表示日期和时间,其中 {yyyy-MM-dd HH:mm:ss} 指定了日期和时间的格式。在这个例子中,日期将以 年-月-日 时:分:秒 的格式显示。

  • %-5p:这表示日志消息的级别(如DEBUG、INFO、WARN、ERROR等),-5 指定了日志级别文本的最小宽度为5个字符,如果不足5个字符,则左对齐并填充空格;如果超过5个字符,则不会被截断。

  • %c{1}:这表示日志记录器的名称(即发出日志消息的类的全限定名)。{1} 指定了只显示类名的最后一个组件(即类名本身,不包括包名)。如果你想去掉包名并只显示类名,这是一个很有用的选项。

  • %L:这表示发出日志消息的代码行号。

  • %m:这表示日志消息本身。

  • %n:这表示新行,用于在日志消息之间插入换行符。

  • [%t]:显示产生日志事件的线程名称,被方括号包围。

将这些格式化选项组合起来,就可以得到一个完整的 ConversionPattern。例如:

log4j.appender.FILE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

这个模式字符串告诉 Log4j,在将日志消息写入文件时,应该按照以下格式来格式化每条消息:

  • 首先,显示日期和时间(格式为 年-月-日 时:分:秒)。
  • 然后,显示日志级别(左对齐,至少占用5个字符的宽度)。
  • 接着,显示发出日志消息的类的最后一个组件名称(即类名),后面跟着一个冒号和行号。
  • 最后,显示日志消息本身,并在消息末尾添加一个换行符。

这样,每条日志消息都会按照指定的格式清晰地显示在文件中,便于后续的查看和分析。

相关推荐
热心小张27 分钟前
Springboot单元测试
spring boot·单元测试·log4j
小安同学iter21 小时前
Spring(五)容器-依赖注入的三种方式
java·servlet·log4j
功德+n21 小时前
Apache Log4j 2
java·开发语言·log4j·maven·apache
是一个Bug3 天前
避免魔法值和多层if的关键:编程范式和设计模式
java·设计模式·log4j
ashane13144 天前
Spring 构造器注入和setter注入的比较
java·spring·log4j
多多*4 天前
概念|RabbitMQ 消息生命周期 待消费的消息和待应答的消息有什么区别
java·大数据·开发语言·windows·log4j
多多*6 天前
谈谈单例模式中通过Htools包的SpringUtil.getBean获取Bean的好处
java·开发语言·windows·单例模式·面试·log4j
码叔义7 天前
slf4j和log4j的区别与使用
python·单元测试·log4j
图图图图爱睡觉8 天前
用大白话解释日志处理Log4j 是什么 有什么用 怎么用
单元测试·log4j
阿拉希神猪8 天前
基于log4j的自定义traceid实现
java·开发语言·log4j