个性化阅读
专注于IT技术分析

Log4J日志文件

本文概述

Log4j提供org.apache.log4j.FileAppender类, 以将你的日志记录信息写入文件。

FileAppender参数

FileAppender具有以下可配置参数:

Parameter Description
immediateFlush 此标志的默认值为true, 这意味着每次附加操作都会刷新文件的输出流。
encoding 我们可以使用任何字符-编码。默认情况下, 编码是特定于平台的编码方案。
threshold 此附加器的阈值级别。
Filename 日志文件的名称。
fileAppend 默认值为true, 这意味着日志记录信息将附加到同一文件的末尾。
bufferedIO 该标志定义我们是否需要启用缓冲写入。默认值为false。
bufferSize 如果启用了缓冲的I / O或为true, 则指示缓冲大小。默认情况下, 它设置为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用于通过以下模式之一控制过渡计划:

DatePattern Description
‘。’ 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

赞(0)
未经允许不得转载:srcmini » Log4J日志文件

评论 抢沙发

评论前必须登录!