log4j可也记录一些日志信息如在开发阶段查看程序的出错或调试信息在产品阶段查看运行情况
System.out.println的局限性:
1、不能在运行时打开或关闭;
2、不能选择包或类,在运行时打开或关闭;
3、输出的信息没有分级;
4、只能输出文本信息;
5、不能改变输出的位置。
log4j可以解决以上问题。
log4j下载地址; http://logging.apache.org/log4j
将下载后的文件解压到当前目录下找到.jar文件(log4j-1.2.15.jar)
加载到classpath路径下
log4j的基本程序:HelloWorld
//HelloWorld.java
package test.log4j;
import org.apache.log4j.*;
public class HelloWorld {
private static Logger log = Logger.getLogger(HelloWorld.class);
public static void main(String[] args){
//输出debug级别的信息
log.debug("This is a debug message");
log.info("This is a info message");
log.error("This is a error message");
}
}
将配置文件log4j.properties文件放在src根目录下
//log4j.properties
log4j.rootLogger = debug, appender1
log4j.appender.appender1 = org.apache.log4j.ConsoleAppender
log4j.appender.appender1.layout = org.apache.log4j.SimpleLayout
运行HelloWorld程序控制台输出信息为
INFO - This is a info message !
WARN - This is a warn message!
ERROR - This is a error message!
好了现在你的log4j程序实现了!
log4j的核心
Logger完成日志信息的处理
Logger可以决定输出的层次和决定信息是否输出
Logger输出信息是有优先级别的:
ALL<TRACE<DEBUG<INFO<WARN<ERROR<FATAL<OFF
Appender设置日志信息的去向
Apperder就是设置日志输出到什么地方,你可以指定多个输出位置
log4j.appender.appenderName = Appender.class;
log4j.appender.appenderName.option1 = value1;
log4j.appender.appenderName.optionN = valueN;
常用的Appender有以下几个:
org.apache.log4j.ConsoleAppender(控制台)
org.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingAppender(每天产生一个日志文件)
org.apache.log4j.RollingAppender(文件大小到一定大小时产生一个新的文件)
org.apache.log4j.WriterAppender(将日志信息以串流的格式发送到任意指定的地方)
org.apache.log4j.JdbcAppender(将日志信息保存到数据库)
Layout设置日志信息的输出样式
layout设置日志信息的格式
org.apache.appender.appenderName.layout = Layout.class
org.apache.appender.appenderName.option1 = value1
常用的Layout有以下几个:
org.apache.log4j.HTMLLayout(以html的形式布局)
org.apache.log4j.SimpleLayout(包含日志级别信息和日志信息)
org.apache.log4j.TTCCLayout(包括日志产生的时间、执行线程、类别等信息)
org.apache.log4j.PatternLayout(可以灵活的指定布局格式)
PatternLayout用来制定输出信息的样式;
%p输出优先级,即degug 、 info、 warn 、error
%r 输出自应用启动到输出该日志信息所耗费的毫秒数
%t 输出产生该日志事件的线程名
%f 数据日志信息所属的类别的类别名
%c 输出日志信息所属的类的全名
%d 输出日志时间点的日期或时间,指定格式的方式:%d{yyyy-MM-dd HH:mm:ss}
%l 输出日志事件的发生位置,即输出日志信息的语句出于所在的类别的第几行。
%m 输出代码中指定的信息,如log(message)中的messge
%n 输出一个换行符号
log4j的配置文件可以是:
log4j.properties
log4j.xml
两者的配置信息基本上一样笔者喜欢使用log4j.properties