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个字符的宽度)。
  • 接着,显示发出日志消息的类的最后一个组件名称(即类名),后面跟着一个冒号和行号。
  • 最后,显示日志消息本身,并在消息末尾添加一个换行符。

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

相关推荐
遥不可及~~斌17 小时前
Spring Boot 项目日志系统全攻略:Logback、Log4j2、Log4j与SLF4J整合指南
spring boot·log4j·logback
weixin_438335401 天前
SpringBoot依赖冲突引发的 log4j 日志打印问题及解决方法
spring boot·单元测试·log4j
我是坑货2 天前
maven的项目管理和构建生命周期
java·log4j·maven
凭君语未可10 天前
详解Maven的主要生命周期
java·log4j·maven
WIN赢11 天前
单元测试的编写
单元测试·log4j
zerohawk14 天前
【log4j】配置Slf4j
junit·单元测试·log4j
熬了夜的程序员17 天前
Go 语言封装邮件发送功能
开发语言·后端·golang·log4j
故事与他64518 天前
Apache中间件漏洞攻略
java·服务器·安全·网络安全·中间件·log4j·apache
江沉晚呤时20 天前
精益架构设计:深入理解与实践 C# 中的单一职责原则
java·jvm·算法·log4j·.netcore·net
为美好的生活献上中指21 天前
java每日精进 3.21 【SpringBoot规范2.0】
java·开发语言·spring boot·log4j·async·mail