关闭

log4j使用说明

标签: log4jstringobjectimporttemplatesjava
407人阅读 评论(0) 收藏 举报
分类:

Log4j由三个重要的组件构成:

1.记录器(日志信息的优先级)——日志信息的优先级从高到低有ERRORWARNINFODEBUG,分别用来指定这条日志信息的重要程度;有一个记录器叫根记录器,它永远存在,且不能通过名字检索或引用,可以通过Logger.getRootLogger()方法取得它,而一般记录器通过Logger.getLogger(String name)方法。当调用log()方法时,log信息的级别就需要在通过参数明确指定。如果一条log信息的级别,大于等于记录器的级别值,那么记录器就会记录它。

2.存放器(日志信息的输出目的地)——日志信息的输出目的地指定了日志将打印到控制台还是文件中。log4j中,log信息通过存放器输出到目的地。通过file存放器,log信息可以被输出到不同的文件中(即不同的目的地)。log信息可被异步存放。一个记录器可以有多个存放器,可以通过方法addAppender来增加存放器。一条blog信息如果可被这个记录器处理,则记录器会把这条信息送往每个它所拥有的存放器。

3.布局(日志信息的输出格式)——输出格式则控制了日志信息的显示内容。布局负责格式化输出的log信息。log4jPatternLayout可以让程序以类似C语言printf的格式化模板来定义格式。

 

一、定义配置文件

 

1.配置根Logger,其语法为:

log4j.rootLogger = [ level ] , appenderName, appenderName, …

其中,level 是日志记录的优先级,分为OFFFATALERRORWARNINFODEBUGALL或者您定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是ERRORWARNINFODEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。 appenderName就是指定日志信息输出到哪个地方。您可以同时指定多个输出目的地。

 

2.配置日志信息输出目的地Appender,其语法为:

log4j.appender.appenderName = fully.qualified.name.of.appender.class

log4j.appender.appenderName.option1 = value1

log4j.appender.appenderName.option = valueN

其中,Log4j提供的appender有以下几种:

org.apache.log4j.ConsoleAppender(控制台),

org.apache.log4j.FileAppender(文件),

org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),

org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),

org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

 

3.配置日志信息的格式(布局),其语法为:

log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class

log4j.appender.appenderName.layout.option1 = value1

log4j.appender.appenderName.layout.option = valueN

其中,Log4j提供的layout有以下几种:

org.apache.log4j.HTMLLayout(以HTML表格形式布局),

org.apache.log4j.PatternLayout(可以灵活地指定布局模式),

org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),

org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

 

Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下: %m 输出代码中指定的消息

%p 输出优先级,即DEBUGINFOWARNERRORFATAL

%r 输出自应用启动到输出该log信息耗费的毫秒数

%c 输出所属的类目,通常就是所在类的全名

%t 输出产生该日志事件的线程名

%n 输出一个回车换行符,Windows平台为“/r/n”,Unix平台为“/n

%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:20021018 221028921

%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)

 

二、在代码中使用Log4j

 

1.得到记录器

使用Log4j,第一步就是获取日志记录器,这个记录器将负责控制日志信息。其语法为:

 

public static Logger getLogger( String name)

 

通过指定的名字获得记录器,如果必要的话,则为这个名字创建一个新的记录器。Name一般取本类的名字,比如:

 

static Logger logger = Logger.getLogger ( ServerWithLog4j.class.getName () )

 

2.读取配置文件

 

当获得了日志记录器之后,第二步将配置Log4j环境,其语法为:

BasicConfigurator.configure (): 自动快速地使用缺省Log4j环境。

PropertyConfigurator.configure ( String configFilename) :读取使用Java的特性文件编写的配置文件。

DOMConfigurator.configure ( String filename ) :读取XML形式的配置文件。

 

3.插入记录信息(格式化日志信息)

 

当上两个必要步骤执行完毕,您就可以轻松地使用不同优先级别的日志记录语句插入到您想记录日志的任何地方,其语法如下:

 

Logger.debug ( Object message ) ;

Logger.info ( Object message ) ;

Logger.warn ( Object message ) ;

Logger.error ( Object message ) ;

 

 

Re: [醒目]log4j基本使用方法

发表时间: 2005-1-25 下午7:54

 

 


 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 

 


// log4j
基本使用
import java.io.IOException;
 
import org.apache.log4j.*;
import org.apache.log4j.xml.DOMConfigurator;
/**
 * @author Administrator
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */

public class testlog4j {
         static Logger logger=Logger.getLogger(testlog4j.class);  
——获取日志记录器
         public static void main(String[] args){
                 System.out.println(System.getProperty("user.dir"));
                 DOMConfigurator.configure("log4j.xml");
——读取XML形式的配置文件
                 FileAppender appender=null; 
——以文件形式输出
                 try {
                          appender=new FileAppender(new PatternLayout(),"out.txt");
                 } catch (IOException e) {
                          // TODO Auto-generated catch block
                          e.printStackTrace();
                 }
                 logger.setLevel(Level.DEBUG);
                 logger.addAppender(appender);
                 logger.debug("here is some debug");
 ——格式化日志信息
                 logger.info("here is some info");
                 System.out.println(System.getProperty("user.dir"));
         }
 
 
}
 

注意:1.要在classpath中加入org.apache.log4j

2. log4j.xml<!DOCTYPE log4j:configuration SYSTEM "file:///C:/Downloads/eclipsePlugins/log4j_1.2.dtd">进行修改 正确填写log4j_1.2.dtd的路径,log4j_1.2.dtdserver上有。

 

运行正确会出现如下内容:

d:/eclipse/workspace/demo

DEBUG - here is some debug

INFO - here is some info

d:/eclipse/workspace/demo

 

并有OUT文件出现,为输出日志:

 
0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:71795次
    • 积分:1214
    • 等级:
    • 排名:千里之外
    • 原创:44篇
    • 转载:19篇
    • 译文:0篇
    • 评论:7条
    最新评论