1. 为什么要使用Java日志
在程序的开发过程中我们需要调试程序,这时我们通过建立日志文件来记录程序的异常信息,当然有人说我们可以在IDE环境中通过控制台来查看堆栈信息也是可以调试程序,甚至通过单步调试来进行。没错,可是如果我们能够对异常信息进行保存那不是更好吗?所以Java日志的第一个作用就是在开发阶段记录程序的调试信息。
另外更为重要的是在产品交付使用后,我们可以用日志文件来记录程序的运行期间所发生的问题,帮助我们跟踪程序的运行状态,用户的使用信息,以改进程序,以方便维护人员查找问题,这是日志的第二个作用
2. Log4j的下载安装
Log4j是Java最流行的日志处理框架,包括许多著名的开源项目都是通过Log4j来记录和管理日志信息的,例如Hibernate。那么到哪里去下载Log4j呢,我们可以在apache的网站上down一个Log4j,地址是:http://logging.apache.org/log4j/去下载,下载解压后将log4j-1.2.15.jar文件拷贝到你的程序的classpath中去,这样就可以使用log4j的日志功能了。
3. Log4j的使用
package com.log;
import java.util.Date;
import org.apache.log4j.Logger;
/**
* 演示log4j的使用
* @author wuhailin
*/
public class MainClass {
// 调用Logger的getLogger方法获得一个Logger的实例,在这个方法中通常传入当前要记录的类
private static Logger log = Logger.getLogger(MainClass.class);
/**
* @param args
*/
public static void main(String[] args) {
log.info("程序开始运行"+ new Date().toString());
int result = 0;
try {
result = 4 / 0;
} catch (Exception ex) {
log.error("在获得两个数相除的结果时产生异常.", ex);
}
log.info("程序运行结束"+ new Date().toString());
}
}
4. log4j日志的简单配置及使用Log4j.properties
5. log4j的详细配置
在上面的代码中如果运行就会在控制台上输出下列信息:
log4j:WARN No appenders could be found for logger (liky.log.MainClass).
log4j:WARN Please initialize the log4j system properly.
这是因为你还没有配置log4j的配置文件,log4j的日志文件有两种格式,一种是java的属性文件.properties文件,另一种是.xml文件,这里我们以属性文件为例说明如何配置。
首先在你当前的源代码src根目录下新建一个log4j.properties文件,然后在文件中输入下列内容:
# log4j.rootLogger=level,appenderName1,...,appenderNameN
# 表示日志记录所有包中的所有的类的日志,可以在同时声明多个日志,每个日志都可以单独配置
# all:表示日志的级别,可用的选项有:all、trace、debug、info、warn、error、fatal、off
# all表示输出所有信息,off表示任何信息都不记录,越往后级别越高,记录的信息越少
log4j.rootLogger=all,root
# log4j.logger.package: 如果只是记录一部分包的类的日志则使用log4j.logger.package
# 例如:log4j.logger.liky.log.test就表示只记录liky.log包中的类的日志
log4j.logger.liky.log.test=info,test
# log4j.appender.appenderName=org.appender.log4j.Appender
# 表示日志的输出到哪里,Appender表示org.appender.log4j这个包中实现了Appender接口的类
# 实现了Appender接口的类有很多,最常用的有:
# org.apache.log4j.ConsoleAppender:输出到控制台
# org.apache.log4j.FileAppender:输出到日志文件,使用一个日志文件,没有大小限制
# org.apache.log4j.DailyRollingFileAppender:输出到日志文件,每天产生一个日志文件
# org.apache.log4j.RollingFileAppender:输出到日志文件,如果超过了限定大小,则重新产生一个新的
# org.apache.log4j.WriterAppender:将日志文件以字符串流的格式发送到客户指定的任何地方
# org.apache.log4j.jdbc.JDBCAppender:将日志文件输出到数据库中
log4j.appender.root=org.apache.log4j.FileAppender
log4j.appender.test=org.apache.log4j.DailyRollingFileAppender
# log4j.appender.appernderName.File=filePath/fileName
# 如果指定日志输出到文件中,那么需要制定日志文件的路径和文件名,这里和文件的样式相关联
log4j.appender.root.File=log.html
log4j.appender.test.File=test.html
# log4j.appender.appenderName.layout=org.apache.log4j.formatLayout
# 这里制定文件的格式,可选的有:
# org.apache.log4j.HTMLLayout:输出为html格式
# org.apache.log4j.SimpleLayout:由日志的级别和日志的提示信息组成,中间用"-"连接
# org.apache.log4j.TTCCLayout:由时间、线程名、分类、上下文的提示信息组成
# org.apache.log4j.PatternLayout:这是最灵活的日志文件格式,可以配置,相关的配置请参考log4j的文档
log4j.appender.root.layout=org.apache.log4j.HTMLLayout
log4j.appender.test.layout=org.apache.log4j.SimpleLayout