📅  最后修改于: 2021-01-06 09:11:48             🧑  作者: Mango
Log4j提供org.apache.log4j.FileAppender类,以将您的日志记录信息写入文件。
FileAppender具有以下可配置参数:
Parameter | Description |
---|---|
immediateFlush | The default value of this flag is true, which means the output stream to the file being flushed with each append operation. |
encoding | We can use any character – encoding. By default, encoding is the platform-specific encoding scheme. |
threshold | The level of the threshold for this appender. |
Filename | Log file’s name. |
fileAppend | The default value is true, which means the logging information is appended to the end of the same file. |
bufferedIO | This flag defines whether we need buffered writing enabled. The default value is false. |
bufferSize | If buffered I/O is enabled or true, it indicates the buffer size. By default, it is set to 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
范例.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配置文件,则其内容如下:
我们还可以出于某些原因将多个消息写入多个文件,例如,如果文件大小达到某个阈值。
要编写有关登录多个文件的信息,必须使用org.apache.log4j.RollingFileAppender类,该类扩展了FileAppender类并继承了其所有属性。
除了上面提到的FileAppender之外,只有一个重要的参数:
DatePattern:这指示何时滚动文件以及要遵循的命名约定。默认情况下,过渡在每天的午夜执行。
DatePattern用于通过以下模式之一控制过渡计划:
DatePattern | Description |
---|---|
‘.’ yyyy-MM | Rollover at the end of per month and the beginning of the next month. |
‘.’ yyyy-MM-dd | Rollover at midnight per day. It is the default value. |
‘.’ yyyy-MM-dd-a | Rollover is performed at mid day and midnight of each day. |
‘.’ yyyy-MM-dd-HH | Rollover at the top of every hour. |
‘.’ yyyy-MM-dd-HH-mm | Rollover every minute. |
‘.’ yyyy-ww | Rollover is performed on the first day of each week depending upon the locale. |
让我们看一个示例配置文件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