当前位置: 首页 > article >正文

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)等。

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

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


http://www.kler.cn/news/302194.html

相关文章:

  • CUDA-中值滤波算法
  • git标签、repo如何打tag
  • 828华为云征文|基于华为云Flexus云服务器X部署Minio服务
  • 领夹麦克风哪个品牌好?大疆、西圣、博雅无线麦克风在线测评
  • 关于 Embedding 的个人粗略见解
  • cross-plateform 跨平台应用程序-05-Flutter 介绍
  • 【2024 版】最新 kali linux 入门及常用简单工具介绍(非常详细)
  • Unet改进30:添加CAA(2024最新改进方法)|上下文锚定注意模块来捕获远程上下文信息。
  • UE5 性能分析 UnrealInsights
  • MATLAB下载详细教程及下载链接
  • 如何取消密码?打印加密的PDF文件?
  • [论文笔记] ShortGPT Qwen2-0.5B-instruct Qwen2-1.5B-instruct 大模型剪枝
  • 总结拓展九:SAP数据迁移(1)
  • mfc140u.dll错误是什么情况?如何将mfc140u.dll丢失的解决方法详细分析
  • 攻防世界 CTF Pwn(一)
  • Codeforces practice /C++ 2024/9/11 - 2024/9/12
  • HTML + js 生成一个线路走向图,可以标记总共有多少站,用户到达第几站了
  • 惩罚矩阵?动态规划是如何爱上矩阵的
  • MyBatis 源码解析:OGNL 表达式解析与使用
  • 银行业务架构指导应用架构规划及设计方法
  • Redis单机、集群、哨兵、主从架构详解
  • 【专题】2024跨境出海供应链洞察-更先进供应链报告合集PDF分享(附原数据表)
  • SpringBoot登录退出|苍穹外卖登录退出分析
  • 软硬链接与动静态库概览
  • 【Python机器学习】循环神经网络(RNN)——循环网络的记忆功能
  • 如何在Chrome中使用HTML构建交互式网页
  • sklearn-逻辑回归-特征工程示例
  • 深度学习-02 Pytorch
  • 安卓显示驱动
  • Flutter 响应式框架