log4j十一个开源的日志记录组件,在工程中用于代替System.out语句。
它允许开发人员以任意的精细程度控制哪些日志说明被输出,通过使用外部的配置文件,可以在运行的时候配置它。
Log4jPO有三个主要的组件:Loggers(记录器)、Appenders(输出源)、Layout(布局),可以简单的理解为日志类别,日志要输的地方、输出的格式。
Loggers组件在此系统中被分为五个级别:DEBUG<INFO<WARN<ERROR<FATAL。这五个级别是有顺序的。
DEBUG Log4j有一个规则:假设Loggers级别为P,如果在Loggers中发生了一个级别Q比P高,则可以启动,否则屏蔽掉。
有时用户希望根据自己的喜好格式化自己的日志输出。Log4j可以在Appenders的后面附加Layouts来完成这个功能。
Layouts提供了 四种日志输出样式,如根据HTML样式、自由指定样式、包含日志级别与信息的样式和包含日志时间、线程、类别等信息的样式等等。
import org.apache.log4j.BasicConfigurator; //需将jar文件引入到classpath之中
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
public class Log4jTest {
public static void main(String args[]){
Logger logger = Logger.getLogger(Log4jTest.class);
BasicConfigurator.configure();
logger.setLevel(Level.WARN); //配置根Logger,设置等级,只有等级以上的才可以输出,通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。
logger.info("This is an info.");
logger.warn("This is an wanrning.");
logger.error("This is an error.");
logger.fatal("This is an fatal error.");
return;
}
}
Log4j的配置
1、建立Logger实例:
Logger logger = Logger.getLogger(ServerWithLog4j.class.getName ()) ;
2、读取配置文件:
获得了Logger的实例之后,接下来将配置Log4j使用环境:
BasicConfigurator.configure(); //自动快速地使用缺省Log4j环境。
PropertyConfigurator.configure(String configFilename); //读取使用Java的特性文件编写的配置文件。
DOMConfigurator.configure(String filename); //读取XML形式的配置文件。
实际使用:
PropertyConfigurator.configure("ServerWithLog4j.properties");
3、插入日志信息
完成了以上连个步骤以后,下面就可以按日志的不同级别插入到你要记录日志的任何地方了。
Logger.debug(Object message); //调试信息
Logger.info(Object message); //一般信息
Logger.warn(Object message); //警告信息
Logger.error(Object message); //错误信息
Logger.fatal(Object message); //致命错误信息
配置日志信息输出目的地,其语法为:
log4j.appender.appenderName = fully.qualified.name.of.appender.class //
"fully.qualified.name.of.appender.class" 可以指定下面五个目的地中的一个:
1.org.apache.log4j.ConsoleAppender(控制台)
2.org.apache.log4j.FileAppender(文件)
3.org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
4.org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
5.org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
配置日志信息的格式,其语法为:
A. log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
"fully.qualified.name.of.layout.class" 可以指定下面4个格式中的一个:
1.org.apache.log4j.HTMLLayout(以HTML表格形式布局),
2.org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
3.org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
4.org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
理解下面的三者的关系:
Log4j
Apache commons logging
java log dpi
Log4j自学笔记