Log4j官方文档翻译(八、文件输出)

简介:

使用org.apache.log4j.FileAppender可以把日志写到文件中:

FileAppender配置

  • immediateFlush 这个标志默认为true,是否每次有消息产生都自动flush到文件中
  • encoding 字符编码
  • threshold appender的阈值threshold
  • Filename 日志文件的名称
  • fileAppend 默认设置为true,所有的日志都输出到相同的文件
  • bufferedIO 是否启用缓冲区,默认是false
  • bufferSize 如果启用了缓冲区,设置缓冲区的大小。默认是8kb.

下面是log4j.properties中FileAppender的相关配置:

##### Define the root logger with appender filelog4j.rootLogger = DEBUG, FILE##### Define the file appenderlog4j.appender.FILE=org.apache.log4j.FileAppender##### Set the name of the filelog4j.appender.FILE.File=${log}/log.out##### Set the immediate flush to true (default)log4j.appender.FILE.ImmediateFlush=true##### Set the threshold to debug modelog4j.appender.FILE.Threshold=debug##### Set the append to false, overwritelog4j.appender.FILE.Append=false##### Define the layout for file appenderlog4j.appender.FILE.layout=org.apache.log4j.PatternLayoutlog4j.appender.FILE.layout.conversionPattern=%m%n

如果是配置XML的配置文件,可以参考如下:

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration> <appender name="FILE" > <param name="file" value="${log}/log.out"/> <param name="immediateFlush" value="true"/> <param name="threshold" value="debug"/> <param name="append" value="false"/> <layout > <param name="conversionPattern" value="%m%n"/> </layout> </appender> <logger name="log4j.rootLogger" additivity="false"> <level value="DEBUG"/> <appender-ref ref="FILE"/> </logger> </log4j:configuration>

多文件输出——日志轮转

如果需要把日志文件写入到多个文件中,例如,按照文件的大小,到达一定的阈值后,就写入另一个文件。

那么你可以使用apache.log4j.RollingFileAppender类,它继承了FileAppender,并能设置一些属性达到上面的需求。

添加的属性如下:

  • maxFileSize 这是日志轮转的关键属性,设置了日志的大小阈值,默认是10MB
  • maxBackupIndex 这个属性设置了文件会被备份的数目,默认是1

log4j.properties的配置如下

##### Define the root logger with appender filelog4j.rootLogger = DEBUG, FILE##### Define the file appenderlog4j.appender.FILE=org.apache.log4j.RollingFileAppender##### Set the name of the filelog4j.appender.FILE.File=${log}/log.out##### Set the immediate flush to true (default)log4j.appender.FILE.ImmediateFlush=true##### Set the threshold to debug modelog4j.appender.FILE.Threshold=debug##### Set the append to false, should not overwritelog4j.appender.FILE.Append=true##### Set the maximum file size before rolloverlog4j.appender.FILE.MaxFileSize=5KB##### Set the the backup indexlog4j.appender.FILE.MaxBackupIndex=2##### Define the layout for file appenderlog4j.appender.FILE.layout=org.apache.log4j.PatternLayoutlog4j.appender.FILE.layout.conversionPattern=%m%n

如果你希望配置xml文件,那么只要把RollingFileAppender以及它的两个属性添加进去就可以了。

上面的文件中,最大的文件大小为5kb,当超过这个大小后,就会创建新的文件;然后这个文件被命名为log.1;同理,如果有log.2就会重命名为log.3。如果索引数目最多设置为5,并且已经存在了log.5,那么log.5会被直接删除。

多问键输出——日期轮转

如果想要每天更新一下日志文件,那么可以使用org.apache.log4j.DailyRollingFileAppender。

它增加的属性如下:

  • DatePattern 这个属性声明了命名规则,默认是每一天的半夜24点更新一次

这个属性可以按照下面的方式书写:

  • '.'yyyy-MM 在每个月刚开始的时候更新一次
  • '.'yyyy-MM-dd 每天半夜24点的时候更新
  • '.'yyyy-MM-dd-a 每天12点和24点更新
  • '.'yyyy-MM-dd-HH 每个小时更新一次
  • '.'yyyy-MM-dd-HH-mm 每分钟更新一次
  • '.'yyyy-ww 每周的第一天更新

log4j.properties的配置如下

##### Define the root logger with appender filelog4j.rootLogger = DEBUG, FILE##### Define the file appenderlog4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender##### Set the name of the filelog4j.appender.FILE.File=${log}/log.out##### Set the immediate flush to true (default)log4j.appender.FILE.ImmediateFlush=true##### Set the threshold to debug modelog4j.appender.FILE.Threshold=debug##### Set the append to false, should not overwritelog4j.appender.FILE.Append=true##### Set the DatePatternlog4j.appender.FILE.DatePattern='.' yyyy-MM-dd-a##### Define the layout for file appenderlog4j.appender.FILE.layout=org.apache.log4j.PatternLayoutlog4j.appender.FILE.layout.conversionPattern=%m%n

同样,如果在xml中配置,添加相关的属性即可。

本文转自博客园xingoo的博客,原文链接:Log4j官方文档翻译(八、文件输出),如需转载请自行联系原博主。
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
25天前
|
Linux Shell
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
78 1
|
1月前
|
Dubbo Java 应用服务中间件
Dubbo日志文件输出到指定目录 如何定义?
Dubbo日志文件输出到指定目录 如何定义?
|
1月前
|
Shell Linux C语言
【Shell 命令集合 网络通讯 】Linux 查看系统中的UUCP日志文件 uulog命令 使用指南
【Shell 命令集合 网络通讯 】Linux 查看系统中的UUCP日志文件 uulog命令 使用指南
29 0
|
1月前
|
Linux 应用服务中间件 nginx
【PUSDN】centos查看日志文件内容,包含某个关键字的前后5行日志内容,centos查看日志的几种方法
【PUSDN】centos查看日志文件内容,包含某个关键字的前后5行日志内容,centos查看日志的几种方法
49 0
|
4月前
【云备份|| 日志 day6】文件业务处理模块
【云备份|| 日志 day6】文件业务处理模块
|
1月前
|
监控 Shell Linux
【Shell 命令集合 系统管理 】Linux 自动轮转(log rotation)日志文件 logrotate命令 使用指南
【Shell 命令集合 系统管理 】Linux 自动轮转(log rotation)日志文件 logrotate命令 使用指南
51 0
|
3月前
|
SQL Java 数据库连接
Mybatis之Mybatis简介、搭建Mybatis相关步骤(开发环境、maven、核心配置文件、mapper接口、映射文件、junit测试、log4j日志)
【1月更文挑战第2天】 MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下,iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到Github iBatis一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBatis提供的持久层框架包括SQL Maps和Data Access Objects(DAO)
203 3
Mybatis之Mybatis简介、搭建Mybatis相关步骤(开发环境、maven、核心配置文件、mapper接口、映射文件、junit测试、log4j日志)
|
1月前
|
Dubbo Java 应用服务中间件
Dubbo日志文件输出到指定目录 如何定义?
Dubbo日志文件输出到指定目录 如何定义?
|
1月前
|
Dubbo Java 应用服务中间件
Dubbo日志文件输出到指定目录 如何定义?
Dubbo日志文件输出到指定目录 如何定义?
|
7天前
|
运维 Oracle 关系型数据库
Oracle日志文件:数据王国的“记事本”
【4月更文挑战第19天】Oracle日志文件是数据库稳定运行的关键,记录数据变更历史,用于恢复和故障处理。它们协调并发操作,确保数据一致性和完整性。日志文件实时写入操作信息并定期刷新到磁盘,便于数据恢复。然而,日志文件需备份和归档以保证安全性,防止数据丢失。日志文件,数据王国的“记事本”,默默守护数据安全。