Logger输出日志
Appender 日志输出目的地
Layout日志的格式
一个Logger有多个Appender,一个日志可以输出到多个地方
Layout常用的:SimpleLayout,输出到文件->PatternLayout
log4j里Logger的实现类:
public class Logger{
public static Logger getRootLogger();
public static Logger getLogger(String name);
public void debug(Object message);
public void info(Object message);
public void warm(Object message);
public void error(Object message);
public void fatal(Object message);
public void log(Priority p,Object message);
}
Logger干嘛的应该很清晰了。
Logger和Append可以一对多,怎么体现?
写在配置文件里:
log4j.logger.myLogger=warm,file,console //哪个Logger,输出级别,输出方式
log4j.appender.file=org.apache.log4j.RollingFileAppender //对应上边的file
log4j.appender.file.File=log.txt
log4j.appender.console=org.apache.log4j.ConsoleAppender //对应上边的console
Logger依赖Appender
Layout常用的有:
org.apache.log4j.HTMLLayout,
自定义的org.apache.log4j.PatternLayout,
包括日志信息级别和信息的SimpleLayout
包括日志时间,线程,类别等信息的TTCCLayout
log4j.appender.console.layout=org.apache.log4j.SimpleLayout
PatternLayout里的符号表示网上去搜
%c Class %m%n Message %p priority优先级别 %t Thread
日志是继承关系,rootLogger是根,.后边的继承前面的
log4j.apache.helloLogger=WARN
log4j.apache.helloLogger.subLogger=,file
如果子Logger没定义日志级别就会继承父类Logger的日志级别,定义了则不继承
子类Logger会继承父类Logger的所有Appender,除非把子类Logger的additivity属性设置为false.
Logger.getLogger("")用户获取自定义Logger
使用log4j:
1.获取日志记录器
2.读取配置文件
三种方法读取,BasicConfigurator,configure() 放在src下默认执行的读取这个。
PropertyConfigurator.configure(String configFileName) 读java属性文件形式的自定义日志的
DOMConfigurator.configure(String fileName)读xml形式的自定义配置文件
3.输出
如果是自定义配置文件,加载的时候写在一个Servlet的init里就好了
自定义Logger的时候一般写法log4j.logger.myLogger=info,可省略为myLogger=info,