示例:log4j.properties文件
#定义LOG输出级别
log4j.rootLogger = DEBUG,Console,File
#定义日志输出目的地为控制台
log4j.appender.Console = org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target = System.out
#可以灵活地指定日志输出格式,下面一行是指定具体的格式
log4j.appender.Console.layout = org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern = [%c] - %m%n
#文件大小到达指定尺寸的时候产生一个新的文件
log4j.appender.File = org.apache.log4j.RollingFileAppender
#指定输出目录
log4j.appender.File.File = logs/ssm.log
#定义文件最大大小
log4j.appender.File.MaxFileSize = 10MB
# 输出所有日志,如果换成DEBUG表示输出DEBUG以上级别日志
log4j.appender.File.Threshold = ALL
log4j.appender.File.layout = org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern = [%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n
解析
log4j.rootLogger = [ level ] , appender1, appender..n
- level
日志记录的优先级,从高到低分别为OFF>FATAL> ERROR > WARN > INFO > DEBUG >ALL。
若指定了某一级别,则应用程序中的所有低于该级别的日志信息不会被打印出来。 - appender
Apache Log4j 提供的 Appender 对象主要负责将日志信息打印至不同目的地,比如控制台、文件、网络套接字、NT 事件日志等。
例如:log4j.rootLogger = WARN, Console, File
- 应用程序中所有INFO、DEBUG级别的信息都不会打印出来
- 定义了两个Appender对象,分别为Console和File
定义了对象,自然需要配置对象的具体属性
一般来说,配置格式为
log4j.appender.[ object ] = org.apache.log4j.[ class ]
log4j.appender.[ object ].[ attribute ] = [ value ]
...
log4j.appender.[ object ].[ attribute ] = [ value ]
-
object
前面rootLogger定义的Appender对象,如Console,File -
class
Log4j提供的Appender有多种,一般会用到以下几种:
CLASS | 说明 |
---|---|
ConsoleAppender | 控制台 |
FileAppender | 文件 |
DailyRollingFileAppender | 每天产生一个日志文件 |
RollingFileAppender | 文件大小到达指定尺寸的时候产生一个新的文件 |
WriterAppender | 将日志信息以流格式发送到任意指定的地方 |
-
attribute
每个 Appender 对象都有不同的属性,这些属性决定了该对象的行为。常用的有:
属性 | 描述 | value |
---|---|---|
layout | 可以灵活地指定日志输出格式 |
org.apache.log4j.PatternLayout 、... |
target | 目的地可以是控制台、文件,或依赖于 appender 的对象 |
System.out 、... |
threshold | 定义一个阀值级别,Appender会输出所有级别大于或等于阀值级别的日志 |
All 、DEBUG 、... |
注:所有的Appender都可通过设置Threshold来设置本Appender的启用级别
关于PatternLayout
PatternLayout 是一个简单的 Layout 对象,可通过配置文件更改其属性conversionPatter
以设置转换模式。
默认为%r [%t] %p %c %x - %m%n
字符含义,详见链接
测试
log4j.properties
#定义LOG输出级别
log4j.rootLogger = DEBUG,Console,File
#定义日志输出目的地为控制台
log4j.appender.Console = org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target = System.out
#可以灵活地指定日志输出格式,下面一行是指定具体的格式
log4j.appender.Console.layout = org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern = [%c] - %m%n
#文件大小到达指定尺寸的时候产生一个新的文件
log4j.appender.File = org.apache.log4j.RollingFileAppender
#指定输出目录
log4j.appender.File.File = logs/ssm.log
#定义文件最大大小
log4j.appender.File.MaxFileSize = 10MB
# 输出所以日志,如果换成DEBUG表示输出DEBUG以上级别日志
log4j.appender.File.Threshold = WARN
log4j.appender.File.layout = org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern = [%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n
测试代码
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Log4jTest {
private static Logger logger = LoggerFactory.getLogger(Log4jTest.class);
public static void main(String args[]) {
logger.error("Error Message");
logger.warn("Warn Message");
logger.info("Info Message");
logger.debug("Debug Message");
}
}