1. 构成Log4J的三个组件
    1.1 Logger:负责生成日志,并能够对日志信息进行筛选,通俗地讲,就是决定什么日志信息应该被输出,什么日志信息应该被忽略。
    1.2 Appender:定义了日志信息的输出目的地,指定日志信息应该被输出到什么地方,这些地方可以是控制台、文件和网络设备等。
    1.3 Layout: 指定日志信息的输出格式。
其中,一个Logger可以有多个Appender,这意味着日志信息可以同时输出到多个设备上,并且每个Appender都对应一种Layout,Layout决定了输出日志信息的格式。
2. Logger组件的五种日志级别:FATAL、ERROR、WARN、INFO、DEBUG,其中FATAL的级别最高。
3. Log4J的Appender支持将日志信息输出到以下目的地
    3.1 控制台(Console)
    3.2 文件(File)
    3.3 GUI组件(GUI component)
    3.4 远程套接字服务器(Remote socket server)
    3.5 NT的事件记录器(NT Event Logger)
    3.6 远程UNIX Syslog守护进程(Remote Unix Syslog daemon)
4. Layout组件决定日志输出格式的几种类型
    4.1 org.apache.log4j.HTMLLayout(以HTML表格形式布局)
    4.2 org.apache.log4j.PatternLayout(可以灵活地指定布局模式)
    4.3 org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)
    4.4 org.apache.log4j.TTCCLayout(包含日志产生的时间、线程和类别等信息)
5. Logger组件继承关系的特点
    5.1 如果子类Logger组件没有定义日志级别,则将继承父类的日志级别。
    5.2 如果子类Logger组件定义了日志级别,就不会继承父类的日志级别。
    5.3 在默认情况下,子类Logger组件会继承父类的所有Appender,把它们加入到自己的Appender清单中。
    5.4 如果子类Logger组件的additivity标志设为false,那么它就不会继承父类的Appender。additivity标志的值默认为true。
6. Log4J的基本使用方法
    6.1 根据需要编辑配置文件log4j.properties
注意log4j默认的相对路径是工程下面,非src或者bin。
======================================================================================================
## LOGGERS ##
#configure root logger
log4j.rootLogger=INFO,console
#define a logger named helloAppLogger
#log4j.logger.helloappLogger=DEBUG
log4j.logger.helloappLogger=DEBUG
#define a second logger that is a child to helloAppLogger
log4j.logger.helloappLogger.childLogger=,file
## APPENDERS##
# define an appender named console, which is set to be a ConsoleAppender
log4j.appender.console=org.apache.log4j.ConsoleAppender
#define an appender named file, which is set to be a RollingFileAppender
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=log\\log.txt
## LAYOUTS ##
#assign a SimpleLayout to console appender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
#log4j.appender.console.layout.ConversionPattern=%d %t %p : %m%n
#log4j.appender.console.layout.ConversionPattern=%d %-5p [%c{1}] %m%n
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} %-5p \:%m;%n
# assign a PaaternLayout to file appender
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%t %p %m%n
======================================================================================================
    6.2 读取配置文件 PropertyConfigurator.configure("conf\\log4j.properties");
    6.3 获取日志记录器 static Logger helloappLogger = Logger.getLogger("helloappLogger");
    6.4 输入日志信息 helloappLogger.debug("This is a log message from " + helloappLogger.getName());
7. Log4J在Web项目中的应用
    其实与Log4J在一般程序中的应用差不多,只是应该在加载项目的时候就加载配置文件,应用时跟在一般程序中应用没什么区别。
======================================================================================================
//获得配置文件完整路径
String path = getServletContext().getRealPath("/");
String propfile = path + getInitParameter("propfile");
//配置Log4J环境
PropertyConfigurator.configure(propfile);
======================================================================================================