log4的j配置问题
时间:2009-6-2 10:04:51 作者: 来源:
 

    log4j有三个主要的组件:loggers,appenders和layouts,这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出。综合使用这三个组件可以轻松的记录信息的类型和级别,并可以在运行时控制日志输出的样式和位置。下面对三个组件分别进行说明:

    1、 loggers

        loggers组件在此系统中被分为五个级别:debug、info、warn、error和fatal。这五个级别是有顺序的,debug < info < warn < error < fatal,明白这一点很重要,这里log4j有一个规则:假设loggers级别为p,如果在loggers中发生了一个级别q比p高,则可以启动,否则屏蔽掉。

    java程序举例来说:

    //建立logger的一个实例,命名为“com.foo”

    logger  logger = logger.getlogger("com.foo");

    //设置logger的级别。通常不在程序中设置logger的级别。一般在配置文件中设置。

    logger.setlevel(level.info);

    logger barlogger = logger.getlogger("com.foo.bar");

    //下面这个请求可用,因为warn >= info

    logger.warn("low fuel level.");

    //下面这个请求不可用,因为debug < info

    logger.debug("starting search for nearest gas station.");

    //命名为“com.foo.bar”的实例barlogger会继承实例“com.foo”的级别。因此,下面这个请求可用,因为info >= info

    barlogger.info("located nearest gas station.");

    //下面这个请求不可用,因为debug < info

    barlogger.debug("exiting gas station search");

    这里“是否可用”的意思是能否输出logger信息。

        在对logger实例进行命名时,没有限制,可以取任意自己感兴趣的名字。一般情况下建议以类的所在位置来命名logger实例,这是目前来讲比较有效的logger命名方式。这样可以使得每个类建立自己的日志信息,便于管理。比如:

    static logger logger = logger.getlogger(clientwithlog4j.class.getname());

    2、 appenders

        禁用与使用日志请求只是log4j其中的一个小小的地方,log4j日志系统允许把日志输出到不同的地方,如控制台(console)、文件(files)、根据天数或者文件大小产生新的文件、以流的形式发送到其它地方等等。

    其语法表示为:

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


    org.apache.log4j.fileappender(文件),
    org.apache.log4j.dailyrollingfileappender(每天产生一个日志文件),org.apache.log4j.rollingfileappender(文件大小到达指定尺寸的时候产生一个新的文件),
    org.apache.log4j.writerappender(将日志信息以流格式发送到任意指定的地方)

    配置时使用方式为:

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

    log4j.appender.appendername.option1 = value1

    …

    log4j.appender.appendername.option = valuen

    这样就为日志的输出提供了相当大的便利。

    3、 layouts

        有时用户希望根据自己的喜好格式化自己的日志输出。log4j可以在appenders的后面附加layouts来完成这个功能。layouts提供了四种日志输出样式,如根据html样式、自由指定样式、包含日志级别与信息的样式和包含日志时间、线程、类别等信息的样式等等。

    其语法表示为:

    org.apache.log4j.htmllayout(以html表格形式布局),
    org.apache.log4j.patternlayout(可以灵活地指定布局模式),
    org.apache.log4j.simplelayout(包含日志信息的级别和信息字符串),
    org.apache.log4j.ttcclayout(包含日志产生的时间、线程、类别等等信息)

    配置时使用方式为:

         log4j.appender.appendername.layout =       fully.qualified.name.of.layout.class
         log4j.appender.appendername.layout.option1 = value1
         …
         log4j.appender.appendername.layout.option = valuen

        以上是从原理方面说明log4j的使用方法,在具体java编程使用log4j可以参照以下示例:
    1、 建立logger实例:
        语法表示:public static logger getlogger( string name)
        实际使用:static logger logger = logger.getlogger   (serverwithlog4j.class.getname ()) ;
    2、 读取配置文件:
        获得了logger的实例之后,接下来将配置log4j使用环境:
        语法表示:
        basicconfigurator.configure():自动快速地使用缺省log4j环境。
        propertyconfigurator.configure(string configfilename):读取使用java的特性文件编写的配置文件。
        domconfigurator.configure(string filename):读取xml形式的配置文件。
        实际使用:propertyconfigurator.configure("serverwithlog4j.properties");
    3、 插入日志信息
        完成了以上连个步骤以后,下面就可以按日志的不同级别插入到你要记录日志的任何地方了。
        语法表示:
        logger.debug(object message);
        logger.info(object message);
        logger.warn(object message);
        logger.error(object message);
        实际使用:logger.info("serversocket before accept: " + server);

        在实际编程时,要使log4j真正在系统中运行事先还要对配置文件进行定义。定义步骤就是对logger、appender及layout的分别使用,具体如下:
    1、 配置根logger,其语法为:
        log4j.rootlogger = [ level ] , appendername, appendername, …
    这里level指logger的优先级,appendername是日志信息的输出地,可以同时指定多个输出地。如:log4j.rootlogger= info,a1,a2
    2、 配置日志信息输出目的地,其语法为:
        log4j.appender.appendername = fully.qualified.name.of.appender.class
        可以指定上面所述五个目的地中的一个。
    3、 配置日志信息的格式,其语法为:
        log4j.appender.appendername.layout = fully.qualified.name.of.layout.class
        这里上面三个步骤是对前面log4j组件说明的一个简化;下面给出一个具体配置例子,在程序中可以参照执行:
        log4j.rootlogger=info,a1
        log4j.appender.a1=org.apache.log4j.consoleappender
        log4j.appender.a1.layout=org.apache.log4j.patternlayout
        log4j.appender.a1.layout.conversionpattern=
                                            %-4r %-5p %d{yyyy-mm-dd hh:mm:sss} %c %m%n
        这里需要说明的就是日志信息格式中几个符号所代表的含义:
        -x号: x信息输出时左对齐;
        %p: 日志信息级别
        %d{}: 日志信息产生时间
        %c: 日志信息所在地(类名)
        %m: 产生的日志具体信息
        %n: 输出日志信息换行

    根据上面的日志格式,某一个程序的输出结果如下:
    0    info  2003-06-13 13:23:46968 clientwithlog4j client socket: socket[addr=localhost/127.0.0.1,port=8002,localport=2014]
    16   debug 2003-06-13 13:23:46984 clientwithlog4j server says: 'java server with log4j, fri jun 13 13:23:46 cst 2003'
    16   debug 2003-06-13 13:23:46984 clientwithlog4j good
    16   debug 2003-06-13 13:23:46984 clientwithlog4j server responds: 'command 'hello' not understood.'
    16   debug 2003-06-13 13:23:46984 clientwithlog4j help
    16   debug 2003-06-13 13:23:46984 clientwithlog4j server responds: 'vocabulary: help quit'
    16   debug 2003-06-13 13:23:46984 clientwithlog4j quit


 

上一篇:
下一篇:
 
网页模板 网站模板 网站建设 网页设计 网页设计师兼职 自助建站 ...
网站魔坊,网页模板,网站模板,免费网页模板,在线模板设计,免费建站,门户网站搭建,建站,企业网站,奇思网络,奇思,智能建站,自助建站,拖动建站,网站建设,网页设计,在线设计模板
www.wzmof.com/ 47K 2009-5-21
 
商巢...
商巢是一个真实的商业交友社区、为用户提供交友、贸易、社区、建站等服务;临渊慕鱼,不如退而结网!商巢结网行动
www.ncooo.com/ 47K 2009-5-21
 
商巢创业 门户创业 商人网络家园 魔坊建站 商业交友
商巢下的门户,门户又一独立实体与商巢合作,由商巢负责技术的更新以及硬件的支持,门户负责自己领域的市场推广以及相应的售后服务即可。 打破以往门户需要源源不断的技术、硬件投入模式,盈利模式清晰 行业门户以及门户下企业网站由网站魔坊...
mhcy.ncooo.com/ 36K 2009-5-14
 
奇思网络技术 网站建设 深圳网站建设
中小外贸企业做电子商务,需要从两点技术突围 08-01 企业网站建设 提供网站策划、网站建设、数据库开发至网络营销全套解决方案。能针对客户所处行业,结合营销特征量身订做高质量网站建设方案。 网站推广 怎样使网站的投资得到回报?这需要经验...
www.qsnet.com.cn/ 48K 2009-4-2
 
深圳艺术网
深圳艺术网,中国艺术网,中国当代艺术网,广东当代艺术网,广东艺术网,南方当代艺术网,深圳美术网,深港美术网,深港艺术网,深港当代艺术网,杜应红,深圳当代艺术创作库,深圳创库,深圳美术,深圳艺术,深圳收藏,深圳艺术收藏,深圳音乐网,深圳舞蹈...
www.szarts.cn/ 119K 2009-6-9
 
网页设计也通过人脉赚钱-技术传播
 
网页设计114 -打造中国网页设计、网站建设技术信息学习、交流、互动平台
                         打造网页设计师兼职创业平台中心