配置log4j.properties
### 设置logger级别 ###
log4j.rootLogger = debug,stdout,D,E
### 输出格式解释:
### [%-d{yyyy-MM-dd HH:mm:ss}][Class: %c.%M(%F:%L)] %n[Level: %-5p] - Msg: %m%n
### %d{yyyy-MM-dd HH:mm:ss}: 时间,大括号内是时间格式
### %c: 全类名
### %M: 调用的方法名称
### %F:%L 类名:行号(在控制台可以追踪代码)
### %n: 换行
### %p: 日志级别,这里%-5p是指定的5个字符的日志名称,为的是格式整齐
### %m: 日志信息
### 输出的信息大概如下:
### [时间{时间格式}][信息所在的class.method(className:lineNumber)] 换行
### [Level: 5个字符的等级名称] - Msg: 输出信息 换行
### appender.stdout输出到控制台 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-d{yyyy-MM-dd HH:mm:ss}][Class: %c.%M(%F:%L)] %n[Level: %-5p] - Msg: %m%n
### appender.D输出Debug信息到日志文件 F://Log//Log4j//log4j_debug.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = F://Log//Log4j//log4j_debug.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = [%-d{yyyy-MM-dd HH:mm:ss}][Class: %c.%M(%F:%L)] %n[Level: %-5p] - Msg: %m%n
### appender.D输出Error信息到日志文件 F://Log//Log4j//log4j_error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File = F://Log//Log4j//log4j_error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = [%-d{yyyy-MM-dd HH:mm:ss}][Class: %c.%M(%F:%L)] %n[Level: %-5p] - Msg: %m%n
注:输出日志文件路径可以自行调整
log4j测试
public class Log4jTest {
private static Logger logger = Logger.getLogger(Log4jTest.class);
@Test
public void test01() {
// 等级从上到下依次下降
// 灾难、严重
logger.fatal("this is fatal!");
// 错误
logger.error("this is error!");
// 警告
logger.warn("this is warn!");
// 信息
logger.info("this is info!");
// 调试
logger.debug("this is debug!");
// 追踪
logger.trace("this is trace!");
}
}
控制台输出
[2019-11-12 21:02:22][Class: com.lee.demo.ftp.Log4jTest.test01(Log4jTest.java:18)]
[Level: FATAL] - Msg: this is fatal!
[2019-11-12 21:02:22][Class: com.lee.demo.ftp.Log4jTest.test01(Log4jTest.java:20)]
[Level: ERROR] - Msg: this is error!
[2019-11-12 21:02:22][Class: com.lee.demo.ftp.Log4jTest.test01(Log4jTest.java:22)]
[Level: WARN ] - Msg: this is warn!
[2019-11-12 21:02:22][Class: com.lee.demo.ftp.Log4jTest.test01(Log4jTest.java:24)]
[Level: INFO ] - Msg: this is info!
[2019-11-12 21:02:22][Class: com.lee.demo.ftp.Log4jTest.test01(Log4jTest.java:26)]
[Level: DEBUG] - Msg: this is debug!
日志输出文件
1)Debug:F://Log//Log4j//log4j_debug.log
[2019-11-12 21:02:22][Class: com.lee.demo.ftp.Log4jTest.test01(Log4jTest.java:18)]
[Level: FATAL] - Msg: this is fatal!
[2019-11-12 21:02:22][Class: com.lee.demo.ftp.Log4jTest.test01(Log4jTest.java:20)]
[Level: ERROR] - Msg: this is error!
[2019-11-12 21:02:22][Class: com.lee.demo.ftp.Log4jTest.test01(Log4jTest.java:22)]
[Level: WARN ] - Msg: this is warn!
[2019-11-12 21:02:22][Class: com.lee.demo.ftp.Log4jTest.test01(Log4jTest.java:24)]
[Level: INFO ] - Msg: this is info!
[2019-11-12 21:02:22][Class: com.lee.demo.ftp.Log4jTest.test01(Log4jTest.java:26)]
[Level: DEBUG] - Msg: this is debug!
2)Error:F://Log//Log4j//log4j_error.log
[2019-11-12 21:02:22][Class: com.lee.demo.ftp.Log4jTest.test01(Log4jTest.java:18)]
[Level: FATAL] - Msg: this is fatal!
[2019-11-12 21:02:22][Class: com.lee.demo.ftp.Log4jTest.test01(Log4jTest.java:20)]
[Level: ERROR] - Msg: this is error!