Log4j使用比较简单(虽然我折腾了半天
)。
这篇 文章写的不错,是中文的,还有 这篇E文的,详细的介绍了Web开发中如何使用Log4j。
主要总结一下Web中使用Log4j。
这篇 文章写的不错,是中文的,还有 这篇E文的,详细的介绍了Web开发中如何使用Log4j。
主要总结一下Web中使用Log4j。
概述:
- 要在程序中输出调试信息,就要先获得Logger。要获得Logger,就要先配置它。
- 总是可以通过Logger.getRootLogger()来获得根logger,但基本不这么做。(专家说,我也不知道为什么)
- 可以简单的写一个Servlet来初始化,并在启动时装载。好像还有一种用LogFactory类来初始化并提供Logger的。
如何配置并初始化:
- 有3种配置方式:程序中配置,java配置文件,xml配置文件。通常java配置文件简单方便,我喜欢。
- 关于在web应用中初始化,在log4j的官方网站使用手册(英文)webwing翻译的中文版。有一个详细的例子,值得学习。Initialization servlet 部分。
- 最简单的配置方式:将配置文件取名log4j.configuration ,放到WEB-INF/classes下,一切OK!不用再使用第2条的方法来初始化了。
- java配置文件使用PropertyConfigurator ,xml配置文件使用DOMConfigurator。
- 还可以使用BasicConfigurator.configure();来使用基本配置,不过多半不这么用。
- Logger类是Category类的子类,将逐渐替代Category类,以前的配置例子有不少用Category的,建议都用Logger类吧。
- 几个APPENDERS(可以参考示例http://blog.csdn.net/kengking/archive/2004/11/15/LOG4J.aspx)
- Console:org.apache.log4j.ConsoleAppender
- Files :org.apache.log4j.FileAppender
- GUI components:……
- Remote socket servers:……
- NT Event Loggers:……
- Remote UNIX Syslog daemons:……
- PatternLayout的格式(好像差一个)
符号
描述
%r 自程序开始后消耗的毫秒数 %t 表示日志记录请求生成的线程 %p 表示日志语句的优先级别 %c 日志信息所在的类名 %m%n 表示日志信息的内容 %r 自应用启动到输出该log信息耗费的毫秒数 %d 日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921 %l 日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。
程序中使用Logger
- 获得Logger的instance-->输出调试信息,包括:
DEBUG,INFO,WARN,ERROR,FATAL
一共5级,通常INFO就够了。 - 程序中创建Logger可以通过Logger logger = Logger.getLogger(this.getClass().getName()); (如果有LogFactory可以用这个类来生成,例如:private Log log = LogFactory.getFactory().getInstance(this.getClass().getName());)如果JVM中没有这个Logger则创建一个新的Logger。
- 在创建Logger时,如果配置文件中存在有这个logger,则按配置来创建,否则继承rootLogger。
- 这种代码的效率比较高,在以后不需要调试信息的时候是最高效的。if (logger.isInfoEnabled()) logger.info(this.getClass().getName());
……