Log4j:
Log4j的使用分为以下几步:
1.)加载相应的Jar文件,包括:Log4j的核心Jar包,Log4j.jar等。
2.)设置配置文件以对Log4j进行配置。
3.)用import导入Log4j需要使用的相关的类
4.)载入配置文件。可以通过PropertyConfigurator.configure(String configFilename);或使用缺省环境的配置
5.)获取日志记录器Logger的对象。
6.)利用记录器生成日志信息,当以上几个步骤都执行完毕后,便可以轻松地使用不同优先级别的日志记录语句插入到想要记录日志的地方去了。
下面是一个配置文件的例子
log4j.rootLogger=debug,appender1//设置输出的级别及输出的对象
log4j.appender.appender1=org.apache.log4j.FileAppender//信息到什么地方去处理
log4j.appender.appender1.File=c:/demolog4j.html//信息存放到什么地方
log4j.appender.appender1.layout=org.apache.log4j.HTMLLayout//信息输出的样式是什么
Log4j的核心类
Logger:用于完成日志信息的处理。
如:log4j.rootLogger=debug,appender1
配置根Logger,其语法为:
log4j.rootLogger = [ level ] , appenderName, appenderName2
level:日志的级别,指定这条日志信息的重要性。分为ALL < DEBUG < INFO < WARN <ERROR < FATAL < OFF
一般常用的为 DEBUG , INFO ,WARN ,ERROR四种,分别对应Logger类的四种方法
debug(Object message ) ;
info(Object message ) ;
warn(Object message ) ;
error(Object message ) ;
如果设置级别为INFO,则优先级大于等于INFO级别(如:INFO、WARN、ERROR)的日志信息将可以被输出,小于该级别的如:DEBUG将不会被输出
appenderName :就是指定日志信息输出目的地,比如(打印到控制台,输出到文件等)。同一条日志信息可以配置多个输出目的地。
Appender:设置日志信息的去向,日志信息放到那里去,是终端去输出,还是说保存到一个文件
log4j.appender.appender1=org.apache.log4j.FileAppender//信息以文件方式处理保存
log4j.appender.appender1.File=c:/demolog4j.html//信息保存到什么地方去
Log4j提供的appender有以下几种:
org.apache.log4j.ConsoleAppender(控制台)
org.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生新文件)
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
Layout:设置日志信息的输出样式,你是希望输出一个什么样式的信息。设置每条信息输出的一个样式
log4j.appender.appender1.layout=org.apache.log4j.HTMLLayout
Log4j提供的layout有以下几种:
org.apache.log4j.HTMLLayout(以HTML表格形式布局), org.apache.log4j.PatternLayout(可以灵活地指定布局模式), org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串), org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
当使用org.apache.log4j.PatternLayout来自定义信息格式时,可以使用
log4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %p -%m%n 来格式化信息%c 输出所属类的全名,可写为 %c{Num} ,Num类名输出的范围 如:"com.sun.aaa.classB", %C{2}将使日志输出输出范围为:aaa.classB%d 输出日志时间其格式为 可指定格式 如 %d{HH:mm:ss}等%l 输出日志事件发生位置,包括类目名、发生线程,在代码中的行数%n 换行符%m 输出代码指定信息,如info(“message”),输出message%p 输出日志的优先级,即 FATAL ,ERROR 等%r 输出从启动到显示该条日志信息所耗费的时间(毫秒数)%t 输出产生该日志事件的线程名
这三个核心怎么去用呢,实际上是都是通过Log4j的配置文件来配置的。
Log4j在程序中的使用示例:
package com.study;/**导入Log4j需要使用的相关的类*/import org.apache.log4j.Logger;import org.apache.log4j.BasicConfigurator;/** * <p>Title: Log4j例子</p> * <p>Description: 快速在程序中使用Log4j</p> * <p>Copyright: Copyright (c) 2004</p> * @author Robin * @version 1.0 */public class HelloLog4j { //定义日志记录器logger,所有的日志由它来负责记录, static Logger logger=Logger.getLogger(HelloLog4j.class.getClass()); public static void main(String[] args) { //使用缺省环境来配置Log4j BasicConfigurator.configure(); //使用配置文件来配置Log4j //PropertyConfigurator.configure ( "D:\\testLog4j.properties" ) ; //插入日志信息 logger.info("HelloLog4j开始执行"); try { HelloLog4j helloLog4j1 = new HelloLog4j(); int count=helloLog4j1.count(1,-32); logger.debug("count的值为:"+count); } catch (Exception e) { logger.error("error"+e.getMessage()); } logger.info("HelloLog4j执行完成"); } /** * 求两整数数之和 * */ public int count(int a,int b) { int add=a+b; if (add<0){ logger.warn("两数之和小于零"); } return add; }}