Log4j

建立一个简单的工程.加上各种日志,LOG4J,COMMONLOGGING,SLF4J,LOGBACK所有JAR,及源码,做个比较.

[img]http://dl2.iteye.com/upload/attachment/0090/0278/fea852f1-d5dc-3839-9b0d-66be44feeebd.bmp[/img]

pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>yan</groupId>
<artifactId>logTest</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.2</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.7.2</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.2</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.0.6</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-access</artifactId>
<version>1.0.9</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.0.6</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.2</version>
</dependency>
</dependencies>
</project>

然后写一个类.代码入下.

import org.apache.log4j.Logger;
public class Log4jLogClass {
private static org.apache.log4j.Logger log = Logger
.getLogger(Log4jLogClass.class);
public static void main(String[] args) {
log.trace("Trace Message!");
log.debug("Debug Message!");
log.info("Info Message!");
log.warn("Warn Message!");
log.error("Error Message!");
log.fatal("Fatal Message!");
}
}


在resource目录下添加配置文件.

[img]http://dl2.iteye.com/upload/attachment/0090/0258/ba308755-698e-33fc-9454-454286b4e149.bmp[/img]

配置文件的内容:
log4j.rootLogger=debug, stdout, R

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

log4j.appender.stdout.layout.ConversionPattern=%5p - %m%n

log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=firestorm.log

log4j.appender.R.MaxFileSize=100KB
log4j.appender.R.MaxBackupIndex=1

log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n

log4j.logger.com.codefutures=DEBUG

然后再DEBUG源代码,以下为初始化时的调用栈:

owns: RootLogger (id=26)
RollingFileAppender.<init>() line: 64
NativeConstructorAccessorImpl.newInstance0(Constructor, Object[]) line: not available [native method]
NativeConstructorAccessorImpl.newInstance(Object[]) line: 57
DelegatingConstructorAccessorImpl.newInstance(Object[]) line: 45
Constructor<T>.newInstance(Object...) line: 526
Class<T>.newInstance() line: 374
OptionConverter.instantiateByClassName(String, Class, Object) line: 337
OptionConverter.instantiateByKey(Properties, String, Class, Object) line: 124
PropertyConfigurator.parseAppender(Properties, String) line: 785
PropertyConfigurator.parseCategory(Properties, Logger, String, String, String) line: 768
PropertyConfigurator.configureRootCategory(Properties, LoggerRepository) line: 648
PropertyConfigurator.doConfigure(Properties, LoggerRepository) line: 514
PropertyConfigurator.doConfigure(URL, LoggerRepository) line: 580
OptionConverter.selectAndConfigure(URL, String, LoggerRepository) line: 526
LogManager.<clinit>() line: 127
Logger.getLogger(Class) line: 117
Log4jLogClass.<clinit>() line: 5


输出LOG的流程.

[img]http://dl2.iteye.com/upload/attachment/0090/0276/6584cb1d-0a54-38e2-a0d7-7efc31a932ba.bmp[/img]


分文件输出LOG:
TestLog4j.rar
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值