爱程序网

log4j 配置

来源: 阅读:

什么是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 代码中直接使用

package com.test;

import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Logger;

public class LoggerTest {

    static Logger logger = Logger.getLogger(LoggerTest.class);

    public LoggerTest() {

    }

    public static void main(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 测试

package com.test.log;

import java.io.IOException;

import org.apache.log4j.DailyRollingFileAppender;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;

public class DailyLog {
    static Logger logger = Logger.getLogger(DailyLog.class);
    
    public static void main(String[] args) {
        // 日志输出模式
        String pattern = "[%d{yyyy-MM-dd HH:mm:ss}] %-5p [%l] - %m%n";
        PatternLayout layout = new PatternLayout(pattern);
        
        // 日志文件名称
        String fileName = "DailyLog";
        
        // 文件的日期模式
        String datePattern = ".yyyy-MM-dd";

        DailyRollingFileAppender appender = null;
        
        try {
            appender = new DailyRollingFileAppender(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、编写测试程序

package com.test.log;

import org.apache.log4j.Logger;

public class LogProperty01 {
    
    static Logger logger = Logger.getLogger(LogProperty01.class);
    
    public static void main(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

关于爱程序网 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助