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

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

相关推荐
努力成为AK大王9 小时前
超全 Maven 核心知识点总结
log4j
voyaqi3 天前
从零设计企业级校验框架:Spring Boot + SPI 实战指南
spring boot·后端·log4j
前端若水6 天前
智能体开发与传统软件开发的核心区别
网络·人工智能·python·开源·log4j
zlpzlpzyd8 天前
slf4j中jcl-over-slf4j、jul-to-slf4j、log4j-over-slf4j、slf4j-api的区别是什么
java·开发语言·log4j
计算机安禾9 天前
【c++面向对象编程】第9篇:友元(friend):破坏封装的“特权”——真的有害吗?
java·c++·log4j
代码漫谈10 天前
Spring Boot日志配置全攻略:打造高效、可靠的日志系统
java·spring boot·log4j·日志
ideal-cs10 天前
总结:生产环境Logback日志配置模板与pattern格式案例
java·log4j·logback·pattern·后端日志
学习论之费曼学习法12 天前
Agent评估与测试:如何确保AI系统的可靠性
人工智能·log4j
北风toto12 天前
log4j中文日志乱码问号-Linux启动jar包,输出中文日志变成问号?
linux·log4j·jar
ppandss113 天前
JavaWeb从0到1-DAY5.1-Maven-JUnit
junit·log4j·maven