Log4j教程

Log4J 日志文件

Log4J-在文件中记录

Log4j 提供了 org.apache.log4j.FileAppender 类来将您的日志信息写入文件。

FileAppender 参数

FileAppender 具有以下可配置参数:
参数 说明
immediateFlush 这个标志的默认值为真,这意味着文件的输出流被每个追加操作刷新。
encoding 我们可以使用任何字符-编码。默认情况下,编码是特定于平台的编码方案。
threshold 此 appender 的阈值级别。
Filename 日志文件名。
fileAppend 默认值为true,表示将日志信息附加到同一个文件的末尾。
bufferedIO 这个标志定义了我们是否需要启用缓冲写入。默认值为 false。
bufferSize 如果缓冲 I/O 已启用或为真,则指示缓冲区大小。默认情况下,它设置为 8kb。
让我们看一个 FileAppender 的例子:
Log4j.properties
# Define the root logger with appender file
log = /usr/home/log4j
# Define the root logger with appender file
log4j.rootLogger = DEBUG, FILE
# Define the file appender
log4j.appender.FILE=org.apache.log4j.FileAppender
# Set the name of the file
log4j.appender.FILE.File=${log}/log.out
# Set the immediate flush to true (default)
log4j.appender.FILE.ImmediateFlush=true
# Set the threshold to debug mode
log4j.appender.FILE.Threshold=debug
# Set the append to false, overwrite
log4j.appender.FILE.Append=false
# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n
Example.java
import org.apache.log4j.Logger;
import java.io.*;
import java.sql.SQLException;
import java.util.*;
public class HtmlLayoutEx{
   static Logger log = Logger.getLogger(HtmlLayoutEx.class.getName());
   
   public static void main(String[] args)throws IOException, SQLException{
      log.debug("Hello this is a debug message");
      log.info("Hello this is an info message");
   }
}
输出:
     Hello this is a debug message
Hello this is an info message
如果你希望有一个等同于上述 log4j.properties 文件的 XML 配置文件,那么下面是内容:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration>
<appender name="FILE" class="org.apache.log4j.FileAppender">
   <param name="file" value="${log}/log.out"/>
   <param name="immediateFlush" value="true"/>
   <param name="threshold" value="debug"/>
   <param name="append" value="false"/>
   
   <layout class="org.apache.log4j.PatternLayout">
      <param name="conversionPattern" value="%m%n"/>
   </layout>
</appender>
<logger name="log4j.rootLogger" additivity="false">
   <level value="DEBUG"/>
   <appender-ref ref="FILE"/>
</logger>
</log4j:configuration>

登录多个文件

我们也可以出于某些原因将多条消息写入多个文件,例如,如果文件大小达到某个阈值。
要写入有关登录多个文件的信息,您必须使用 org.apache.log4j.RollingFileAppender 类,该类扩展 FileAppender 类并继承其所有属性。
那里除了上面提到的 FileAppender 参数之外,它只是一个重要参数:
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 immediate flush to true (default)
log4j.appender.FILE.ImmediateFlush=true
# Set the threshold to debug mode
log4j.appender.FILE.Threshold=debug
# Set the append-false, should not overwrite
log4j.appender.FILE.Append=true
# Set the DatePattern
log4j.appender.FILE.DatePattern='.' yyyy-MM-dd-a
# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4