要点:
1.打印日志到控制台和文件。
2.将指定的Java类日志输出到指定的文件。
步骤:
1.添加jar包。http://download.csdn.net/detail/xiakepan/9094753
2.添加配置文件。
log4j.properties
#可以设置级别:debug>info>error
#debug:显示debug、info、error
#info:显示info、error
#error:只error
#log4j.rootLogger=debug,appender1
#log4j.rootLogger=info,appender1
#log4j.rootLogger=error,appender1
#stdout输出到控制台
#R0输出到公共的文件
#R1只将test.Test2.java中的信息输出到一个专门的文件logs/test2/all2.log
log4j.rootCategory=debug, stdout , R0
#R1只打印Test2类中的异常,可以实现某些类中的异常新建单独文件打印。
log4j.logger.test.Test2=debug, stdout , R1
#控制台配置
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} [%p] %c - %m%n
#整个项目输出的文件
log4j.appender.R0=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R0.layout=org.apache.log4j.PatternLayout
log4j.appender.R0.layout.ConversionPattern=%-20d{yyyy-MM-dd HH:mm:ss} [%p](%c\:%L)(%t) - %m%n
#将头一天的日志文件名改成logs/all.log.2014-12-31
log4j.appender.R0.DatePattern='.'yyyy-MM-dd
#将日志文件放在logs/all.log中
log4j.appender.R0.File=logs/CatchNovel.log
#R1指定类输出到指定的日志文件
log4j.appender.R1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R1.layout=org.apache.log4j.PatternLayout
log4j.appender.R1.layout.ConversionPattern=%-20d{yyyy-MM-dd HH:mm:ss} [%p](%C\:%L)(%t) - %m%n
#将头一天的日志文件名改成logs/all.log.2014-12-31
log4j.appender.R1.DatePattern='.'yyyy-MM-dd
#将日志文件放在logs/all.log中
log4j.appender.R1.File=logs/test2/test2.log
3.编写测试代码
Test.java
package test;
import org.apache.log4j.Logger;
public class Test {
private static Logger logger = Logger.getLogger(Test.class);
public void run() {
// 记录debug级别的信息
logger.debug("This is debug message.");
// 记录info级别的信息
logger.info("This is info message.");
// 记录error级别的信息
logger.error("This is error message.");
try{
int i = 5/0;
}catch(Exception e){
logger.error("打印getMessage=" + e.getMessage());
logger.error("打印getStackTrace=" + e.getStackTrace());
logger.error("打印e=" + e);
logger.error("打印error(e,e)=");
logger.error(e, e);
}
}
public static void main(String[] args) {
Test t = new Test();
t.run();
}
}
Test2.java
package test;
import org.apache.log4j.Logger;
public class Test2 {
private static Logger logger = Logger.getLogger(Test2.class);
public void run() {
// 记录debug级别的信息
logger.debug("This is debug message.");
// 记录info级别的信息
logger.info("This is info message.");
// 记录error级别的信息
logger.error("This is error message.");
try{
int i = 5/0;
}catch(Exception e){
logger.error("打印getMessage=" + e.getMessage());
logger.error("打印getStackTrace=" + e.getStackTrace());
logger.error("打印e=" + e);
logger.error("打印error(e,e)=");
logger.error(e, e);
}
}
public static void main(String[] args) {
Test2 t = new Test2();
t.run();
}
}
4.直接运行两个Java类。到项目logs目录下查看日志
红圈圈出的依次是:时间、日志级别、类路径和打印日志的行数、线程、e.getMessage日志、error(e,e)日志。
总结:我平时打印只关注debug、info、error和堆栈信息。所以只需要使用logger.debug、logger.info、logger.error、logger.error(e, e);这四个方法就行了。
目录结构: