第三百零七节 Log4j教程 - Log4j日志格式、Log4j日志到文件

Log4j教程 - Log4j日志格式

Apache log4j提供布局对象,以根据各种布局格式化日志数据。

布局类层次结构中的顶级类是抽象类org.apache.log4j.Layout。

org.apache.log4j.Layout是log4j API中所有其他Layout类的基类。

它有以下子类。

  • DateLayout

  • HTMLLayout

  • PatternLayout。

  • SimpleLayout

  • XMLLayout

布局类的方法

下表列出了Layout类中的类。

方法 描述
public abstract boolean ignoresThrowable() 如果忽略Throwable对象。
public abstract String format(LoggingEvent event) 实现此方法以进行格式化布局。
public String getContentType() 返回布局对象使用的内容类型。
public String getFooter() 记录消息的页脚信息。
public String getHeader() 日志消息的头信息。

Log4j教程 - Log4j日志到文件

要将信息记录到文件中,请使用org.apache.log4j.FileAppender。

下表列出了FileAppender的可配置参数。

属性 描述
immediateFlush 默认值为true。刷新每个追加操作的消息。
encoding 更改字符编码。默认为平台特定的编码方案。
threshold 此附加器的阈值级别。
Filename 日志文件的名称。
fileAppend 默认为true。将日志记录信息附加到同一文件的结尾。
bufferedIO 是否缓冲写入。默认为false。
bufferSize 如果启用了缓冲I/O,请设置缓冲区大小。默认值为8kb。

例子

以下是FileAppender的配置文件示例log4j.properties。

复制代码
# Define the root logger with appender file
log4j.rootLogger = DEBUG, FILE

# Define the file appender
log4j.appender.FILE=org.apache.log4j.FileAppender
# file name
log4j.appender.FILE.File=${log}/log.out 

# Set the flush to true
log4j.appender.FILE.ImmediateFlush=true

# Set the threshold to debug mode
log4j.appender.FILE.Threshold=debug

# Set the append to true, overwrite
log4j.appender.FILE.Append=true

# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n

登录多个文件

我们可能希望将消息记录到多个文件中,例如,如果文件大小达到某个阈值,我们希望将消息记录到一个新文件。

要将信息记录到多个文件中,请使用org.apache.log4j.RollingFileAppender类,该类扩展了FileAppender类并继承其所有属性。

下表列出了除FileAppender提到的可配置参数外:

描述 描述
maxFileSize 将滚动文件的文件的最大大小。 默认值为10MB
maxBackupIndex 设置要创建的备份文件数。默认值为1。

以下示例显示了RollingFileAppender的示例配置文件log4j.properties。

复制代码
# Define the root logger with appender file
log4j.rootLogger = DEBUG, FILE

# Define the file appender
log4j.appender.FILE=org.apache.log4j.RollingFileAppender
# file name
log4j.appender.FILE.File=${log}/log.out

# Set the maximum file size before rollover
log4j.appender.FILE.MaxFileSize=5KB

# Set the the backup index
log4j.appender.FILE.MaxBackupIndex=2

每日日志文件

要每天生成日志文件,请使用org.apache.log4j.DailyRollingFileAppender类扩展FileAppender类。

DatePattern 控制何时滚动文件。

描述 描述
DatePattern 指示何时滚动文件,以及要遵循的命名约定。默认情况下每天午夜滚动。

DatePattern支持以下模式:

DatePattern 描述
'.' yyyy-MM 每月结束时滚动。
'.' yyyy-MM-dd 在每天的中午和午夜滚动。
'.' yyyy-MM-dd-a 默认值。每天午夜滚动。
'.' yyyy-MM-dd-HH 滚动在每个小时的顶部。
'.' yyyy-MM-dd-HH-mm 每分钟滚动一次。
'.' yyyy-ww 根据区域设置,每周的第一天滚动。

以下代码显示了用于在每天的中午和午夜翻转的配置文件log4j.properties。

复制代码
# Define the root logger with appender file
log4j.rootLogger = DEBUG, FILE

# Define the file appender
log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender
# Set the name of the file
log4j.appender.FILE.File=${log}/log.out

# Set the DatePattern
log4j.appender.FILE.DatePattern="." yyyy-MM-dd-a
相关推荐
2501_948195348 小时前
RN for OpenHarmony英雄联盟助手App实战:主导航实现
数据库
Filotimo_8 小时前
N+1查询问题
数据库·oracle
fenglllle9 小时前
spring-data-jpa saveall慢的原因
数据库·spring·hibernate
DarkAthena10 小时前
【GaussDB】执行索引跳扫时如果遇到该索引正在执行autovacuum,可能会导致数据查询不到
数据库·gaussdb
短剑重铸之日10 小时前
《7天学会Redis》Day 5 - Redis Cluster集群架构
数据库·redis·后端·缓存·架构·cluster
007php00710 小时前
mySQL里有2000w数据,Redis中只存20w的数据,如何保证Redis中的数据都是热点数据
数据库·redis·git·mysql·面试·职场和发展·php
lkbhua莱克瓦2410 小时前
进阶-存储过程3-存储函数
java·数据库·sql·mysql·数据库优化·视图
Elastic 中国社区官方博客11 小时前
使用 Elastic 中的 OpenTelemetry 为 Nginx 实现端到端分布式追踪的实用指南
大数据·运维·分布式·elasticsearch·搜索引擎·信息可视化·全文检索
老邓计算机毕设11 小时前
SSM心理健康系统84459(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架·心理健康系统·在线咨询