您的位置:首页 > 其它

Log4j详细介绍(一)----Log4j快速入门

2013-06-06 17:46 337 查看
Log4j是目前运用最广泛的日志控件,它把日志分为ALL,TRACE(跟踪),DEBUG( 调试),INFO(信息),WARNING(警告),ERROR(错误),FITAL(致命),OFF等几个级别,级别依次升高.级别高的Level会屏蔽级别低的信息.如果设置为WARNING,则TRACE,DEBUG,INFO都不会输出。Log4j的使用非常简单

import org.apache.log4j.Logger;

public class Log4jTest {
public static Logger log = Logger.getLogger(Log4jTest.class);

public static void main(String[] args) {
log.trace("trace信息");
log.debug("debug信息");
log.info("info信息");
log.warn("warn信息");
log.error("errof信息");
log.fatal("fatal信息");
try {
String s = null;
s.length();
} catch (Exception e) {
log.trace("trace一个异常", e);
log.debug("debug一个异常", e);
log.info("info一个异常", e);
log.warn("warn一个异常", e);
log.error("error一个异常", e);
log.fatal("fatal一个异常", e);
}
}

}


日志配置如输出级别,输出到哪儿,输出什么附加信息,输出格式等,一般都写在配置文件log4j.properties中。Log4j默认的配置文件为log4j.properties.启动时,会加载classpath下的log4j.properties初始化log4j。如果文件不存在,Log4j会在控制台打印如下信息,提示没有找到Log4j配置

log4j:WARN No appenders could be found for logger (com.log4j.test2.Log4jTest).
log4j:WARN Please initialize the log4j system properly.


下面是log4j.properties的配置

# ERROR级别,输出到A1
log4j.rootLogger=DEBUG, A1

# 定义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,SSS} [%C]-[%p] %m%n


如果不适用默认的文件名log4j.properties,可用使用PropertyConfigurator指定配置文件路径,例如:

import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

public class Log4jConfigTest {

public static Logger log = Logger.getLogger(Log4jConfigTest.class);

public static void main(String[] args) {
PropertyConfigurator.configure("src/log4jConfigTest.properties");
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {

if (log.isDebugEnabled())
log.debug("开始计算 " + i + " * " + j + " 次运算");
// 或者
// if (log.isEnabledFor(Priority.WARN))
// log.warn("开始计算 " + i + " * " + j + " 次运算");
}
}

new Thread(new Runnable() {
public void run() {
// log.error("debug 级别的输出");
log.error("ERROR 级别的输出");
}
}).start();

// log.error("debug 级别的输出");
log.info("INFO 级别的输出");
log.warn("WARN 级别的输出");
log.error("ERROR 级别的输出");

try {
String s = null;
s.length();
} catch (Exception e) {
log.error(e, e);
}

}

}


Log4j也可以使用XML文件配置,例如:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
<!-- 根logger的设置 -->
<root>
<priority value="all" />
<appender-ref ref="console" />
</root>
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-d{yyyy-MM-dd HH\:mm\:ss,SSS} [%C]-[%p] %m%n" />
</layout>
</appender>
</log4j:configuration>


输出结果

2013-06-06 17:40:36,042 [com.log4j.test2.Log4jTest]-[DEBUG] debug信息
2013-06-06 17:40:36,045 [com.log4j.test2.Log4jTest]-[INFO] info信息
2013-06-06 17:40:36,045 [com.log4j.test2.Log4jTest]-[WARN] warn信息
2013-06-06 17:40:36,046 [com.log4j.test2.Log4jTest]-[ERROR] errof信息
2013-06-06 17:40:36,046 [com.log4j.test2.Log4jTest]-[FATAL] fatal信息
2013-06-06 17:40:36,048 [com.log4j.test2.Log4jTest]-[DEBUG] debug一个异常
java.lang.NullPointerException
at com.log4j.test2.Log4jTest.main(Log4jTest.java:17)
2013-06-06 17:40:36,051 [com.log4j.test2.Log4jTest]-[INFO] info一个异常
java.lang.NullPointerException
at com.log4j.test2.Log4jTest.main(Log4jTest.java:17)
2013-06-06 17:40:36,051 [com.log4j.test2.Log4jTest]-[WARN] warn一个异常
java.lang.NullPointerException
at com.log4j.test2.Log4jTest.main(Log4jTest.java:17)
2013-06-06 17:40:36,051 [com.log4j.test2.Log4jTest]-[ERROR] error一个异常
java.lang.NullPointerException
at com.log4j.test2.Log4jTest.main(Log4jTest.java:17)
2013-06-06 17:40:36,052 [com.log4j.test2.Log4jTest]-[FATAL] fatal一个异常
java.lang.NullPointerException
at com.log4j.test2.Log4jTest.main(Log4jTest.java:17)


Log4j的使用非常灵活,功能也很强大。可以配置文件中配置输出样式,可以吧日志输出到屏幕,控制台,各种样式的文件,数据库,FTP 服务器,HTTP 服务器,远程实时监控程序,系统日志,发送邮件到指定的邮箱,甚至发送信息。这些会在后面捡到,好了以上就是Log4j的快速入门,很简单吧.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: