log4j配置

王朝学院·作者佚名  2016-08-27  
宽屏版  字体: 小 | 中 | 大 | 超大  

什么是log4j?

- Apache 基金的一个开源项目

- 日志文件发送到console、text文件、html文件、xml文件或电子邮件

- Logger(category) : 制作日志文件的类,往Appender发送消息

- Appender : 输出日志的位置 (ex) ConsoleAppender, FileAppender..

- Layout : Appender日志生成之前的消息样式的指定

下载 log4j 包

第一步:访问 http://logging.apache.org/,选择 Apache log4j 1

第二步:选择一个链接下载包

第三步:解压下载的包

放置到工程里面

拷贝 log4j-1.2.17.jar,放到web工程的lib下面

=============================================================================================

log4j 设置方法

(一)java代码中直接使用

(二)log4j.PRoperties(最常用)

(三)log4.xml

第一种方法:java 代码中直接使用

packagecom.test;importorg.apache.log4j.BasicConfigurator;importorg.apache.log4j.Logger;publicclassLoggerTest {staticLogger logger = Logger.getLogger(LoggerTest.class);publicLoggerTest() {

}publicstaticvoidmain(String[] args) {/** 往console输出日志

* 如果没有这段落,出现警告消息后执行退出*/BasicConfigurator.configure();

logger.debug("[DEBUG] Hello log4j.");

logger.info("[INFO] Hello log4j.");

logger.warn("[WARN] Hello log4j.");

logger.error("[ERROR] Hello log4j.");

logger.fatal("[FATAL] Hello log4j.");

}

}

输出日志为

0 [main] DEBUG com.test.LoggerTest - [DEBUG] Hello World

5 [main] INFO com.test.LoggerTest - [INFO] Hello World

5 [main] WARN com.test.LoggerTest - [WARN] Hello World

5 [main] ERROR com.test.LoggerTest - [ERROR] Hello World

5 [main] FATAL com.test.LoggerTest - [FATAL] Hello World

输出日志说明

第一行为例:

0 - 开始调用到结束时间(毫秒)

[main] - 调用的线程名称

DEBUG - 日志等级

LoggerTest - 类名

[DEBUG]Hello World - 日志消息

log 等级

DEBUG < INFO < WARN < ERROR < FATAL

DEBUG : 调试

INFO : 信息

WARN : 警告

ERROR : 错误

FATAL : 致命错误

log4j Layout的种类

1) DateLayout

2) HTMLLayout

3) PatternLayout(比较适合用于debug中)

4) SimpleLayout

5) XMLLayout

PatternLayout说明

[%d{yyyy-MM-dd HH:mm:ss}] %-5p [%l] - %m%n

C : 输出类名

d : 输出日志时间

F : 输出文件名

L : 输出行号

m : 输出向日志传输的消息

M : 输出执行的方法名

n : 换行

p : 日志事件名(DEBUG等)

r : 日志处理时间(毫秒)

PatternLayout 测试

packagecom.test.log;importjava.io.IOException;importorg.apache.log4j.DailyRollingFileAppender;importorg.apache.log4j.Logger;importorg.apache.log4j.PatternLayout;publicclassDailyLog {staticLogger logger = Logger.getLogger(DailyLog.class);publicstaticvoidmain(String[] args) {//日志输出模式String pattern = "[%d{yyyy-MM-dd HH:mm:ss}] %-5p [%l] - %m%n";

PatternLayout layout=newPatternLayout(pattern);//日志文件名称String fileName = "DailyLog";//文件的日期模式String datePattern = ".yyyy-MM-dd";

DailyRollingFileAppender appender=null;try{

appender=newDailyRollingFileAppender(layout, fileName, datePattern);

}catch(IOException e) {

e.printStackTrace();

}

logger.addAppender(appender);

logger.debug("log4j test");

}

}

输出目录在

打开DailyLog文件

[2015-09-18 08:58:04] DEBUG [com.test.log.DailyLog.main(DailyLog.java:33)] - log4j test

解析输出结果:

第一个:日期

第二个:日志Level

第三个:完整类名.方法名(类名:行号)

第四个:打出的日志

第二种方法:log4j.properties(最常用)

1、在src根目录中创建 log4j.properties 文件

#log4j.rootLogger=DEBUG, A1

log4j.rootLogger=OFF, A1

log4j.appender.A1=org.apache.log4j.ConsoleAppender

log4j.appender.A1.layout=org.apache.log4j.PatternLayout

log4j.appender.A1.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] - %m%n

2、编写测试程序

packagecom.test.log;importorg.apache.log4j.Logger;publicclassLogProperty01 {staticLogger logger = Logger.getLogger(LogProperty01.class);publicstaticvoidmain(String[] args) {

logger.debug("===== log Property =====");

}

}

执行run后,控制台什么都没有打出。

改一下配置文件的注释地方后重新执行

log4j.rootLogger=DEBUG, A1

#log4j.rootLogger=OFF, A1

控制台打印出

[2015-09-18 11:19:51] - ===== log Property =====

修改一下log4j.properties文件

log4j.rootLogger=DEBUG, A1

log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender

log4j.appender.A1.File=test.log

log4j.appender.A1.DatePattern='.'yyyy-mm-dd

log4j.appender.A1.layout=org.apache.log4j.PatternLayout

log4j.appender.A1.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] %-5p [%l] - %m%n

执行测试程序LogProperty01.java后会生成 test.log文件

文件里面内容是

[2015-09-18 11:40:00] DEBUG [com.test.log.LogProperty01.main(LogProperty01.java:10)] - ===== log Property =====

完成配置文件

### set log levels ###

log4j.rootLogger = debug, stdout, W, E

### 输出到控制台 ###

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}] %r %-5p [%l] - %n%m%n

log4j.logger.java.sql.Connection=SQL

log4j.logger.java.sql.Statement=SQL

log4j.logger.java.sql.PreparedStatement=SQL

### 输出到日志文件 ###

log4j.appender.W = org.apache.log4j.DailyRollingFileAppender

log4j.appender.W.File = logs/log.log

log4j.appender.W.Append = true

log4j.appender.W.Threshold = WARN

log4j.appender.W.layout = org.apache.log4j.PatternLayout

log4j.appender.W.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [%p] - %m%n

### 保存异常信息到单独文件 ###

log4j.appender.E = org.apache.log4j.DailyRollingFileAppender

log4j.appender.E.File = logs/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} [ %t:%r ] - [%p] - %m%n

[参考文件]

http://www.blogjava.net/zJun/archive/2006/06/28/55511.html

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有