log4j原理以及配置

来源:互联网 发布:韩国melon软件下载 编辑:程序博客网 时间:2024/05/16 19:43

1、LOG4J是怎么工作的?

        JDK提供的new throwable.getStackTrace() 方法获得当前运行栈的层次结构,然后对调用栈进行分析,返回调用该类的名称。Log能把代码运行时间,类名,方法名全部打印出来。

2、log4j的配置文件

       log4j的configure文件就是用来设置记录器的级别,存放器和布局的。我们在配置文件中,可以初始化指定的 Logger ,并且对指定的 Logger 进行一些相关的配置,如设置如何进行输出,以及如何将输出进行布局等。

       配置文件示例:

log4j.properties:

        //配置根,debug表示级别,stdout表示是AppenderName

        log4j.rootLogger=debug, stdout, R

       //配置信息的输出地Appender,log4j中,包含ConsoleAppender,FielAppender(文件)DarieyRollingFileAppender(每天产生一个日志文件) RollingFileAppender(当文件大小到达一定的时候,产生新文件)

         log4j.appender.stdout=org.apache.log4j.ConsoleAppender

      //日志输出格式,有htmlLayout,PatternLayout(任意布局),simpleLayout(包含日志信息级别的字符串)
        log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

      //打印参数

         Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,如下:

         %m 输出代码中的指定的消息

         %p 输出优先级,即GEBUG,INFO,WARN ERROR FATAL

         %r输出从应用程序启动到输出log信息的毫秒数

         %c输出所属的类名

         %t 输出产生该日志事件的线程名

        %n 输出回车换行符

        %d 输出日志时间(可以指定格式)

[配置文件]

### set log levels ###
log4j.rootLogger
=debug,  stdout , D,
 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{ABSOLUTE} %5p %c{1
}:%L - %m%n

### 输出到日志文件 ###
log4j.appender.D
=
org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File
=
logs/log.log
log4j.appender.D.Append
=
true
log4j.appender.D.Threshold
=
DEBUG ## 输出DEBUG级别以上的日志
log4j.appender.D.layout
=
org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern
=%-d{yyyy-MM-dd HH:mm:ss} [%t:%r] - [ %p ]
 %m%n

### 保存异常信息到单独文件 ###
log4j.appender.D
=
org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File
=
logs/error.log ## 异常日志文件名
log4j.appender.D.Append
=
true
log4j.appender.D.Threshold
=
ERROR ## 只输出ERROR级别以上的日志!!!
log4j.appender.D.layout
=
org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern
=%-d{yyyy-MM-dd HH:mm:ss} [%t:%r] - [ %p ]  %m%n


[代码中使用]

public class  TestLog4j {
    
public static   void main(String[] args) 
{
        PropertyConfigurator.configure(
"D:/Code/conf/log4j.properties"
);
        Logger logger 
= Logger.getLogger(TestLog4j.class
);
        logger.debug(
"debug"
);
        logger.error(
"error"
);
    }

}