苹果的成长日记

我还是个青苹果呀!

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  57 随笔 :: 0 文章 :: 74 评论 :: 0 Trackbacks
<2005年7月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

公告

今天我总结了吗? 目前专注于: Jena推理,Rational产品,工作流

常用链接

留言簿(14)

随笔分类(56)

随笔档案(57)

相册

收藏夹(1)

三人行,必有我师

搜索

最新评论

  • 1. re: Jena推理功能的展示
  • 博主,我正在做毕业设计要求一个用户需求本体和资源本体进行匹配,选择出最佳资源。请问这个具体要怎么做???十分着急,紧急求助
  • --李欣
  • 2. re: 【zz至键行天下】java编程100例
  • 你好,我也是一个java刚入门的学生,真诚得希望发到我的邮箱里,我的邮箱是315309254@qq.com
  • --sad
  • 3. re: Jena推理功能的展示
  • 同求一份资料,最近做毕业设计,急需资料,网上找到的一些都是太理论,实践操作性不强,入门太难,希望大神能给一些资料。我邮箱是923395476@qq.com。感激不尽
  • --gududemao
  • 4. re: Jena推理功能的展示
  • 你好,我最近在做jena推理,可是写了规则后推理后的结果却不正确,周围都没有认识的人,博主有时间能交流一下吗?我的qq312462753
  • --ningyh
  • 5. re: Jena推理功能的展示
  • 楼主你好,很抱歉打扰你。我是天津大学的学生,在研究本体推理,刚接触JENA不久,能不能把你的推理代码发给我一份,因为对JENA的推理还没有弄清楚,非常感激! 120693572@qq.com
  • --刘锐光

阅读排行榜

评论排行榜

log4jlogo.jpg原文地址:http://www.infomall.cn/cgi-bin/mallgate/20031008/http://hedong.3322.org/archives/000193.html
说实话,除了log4j的功能外,我更喜欢它的logo.
  下面的这篇笔记,主要是"borrow from"Log4J的随机文档"Short introduction to log4j",由Ceki Gülcü 写于March 2002,其它参考文档见文后。

1、log4j已经被移植到C, C++, C#, Perl, Python, Ruby, Eiffel 几种语言。
2、log4j有三种主要的组件记录器,存放器,布局
3、记录器(记录器可不关心log数据存放的事哟)
  log4j允许程序员定义多个记录器,每个记录器有自己的名字,记录器之间通过名字来表明隶属关系(或家族关系)。列如,记录器a.b,与记录器a.b.c之间是父子关系,而记录器a与a.b.c之间是祖先与后代的关系,父子关系是祖先与后代关系的特例。通过这种关系,可以描述不同记录器之间的逻辑关系。
  有一个记录器叫根记录器,它永远存在,且不能通过名字检索或引用,可以通过Logger.getRootLogger()方法取得它,而一般记录器通过Logger.getLogger(String name)方法。下面是Logger类的基本方法。

package org.apache.log4j;

public class Logger {

// Creation & retrieval methods:
public static Logger getRootLogger();
public static Logger getLogger(String name);

// printing methods:
public void debug(Object message);
public void info(Object message);
public void warn(Object message);
public void error(Object message);
public void fatal(Object message);

// generic printing method:
public void log(Level l, Object message);
}


  记录器还有一个重要的属性,就是级别。(这好理解,就象一个家庭中,成员间存在辈份关系,但不同的成员的身高可能不一样,且身高与辈份无关)程序员可以给不同的记录器赋以不同的级别,如果某个成员没有被明确值,就自动继承最近的一个有级别长辈的级别值。根记录器总有级别值。例如:
记录器名 赋予的级别值 继承的级别值
root Proot Proot
X Px Px
X.Y none Px
X.Y.Z none Px

  程序员可以自由定义级别。级别值之间存在偏序关系,如上面几种级别就有关系DEBUG   每一条要输出的log信息,也有一个级别值。
  前面的Logger类中,就预定义了 DEBUG, INFO, WARN, ERROR ,FATAL几种级别,由于与方法绑定,让人易产生误解,其实这几个方法只不过表明了要记录的log信息的级别。当调用log()方法时,log信息的级别就需要在通过参数明确指定。
  如果一条log信息的级别,大于等于记录器的级别值,那么记录器就会记录它。如果你觉得难以理解,可参考下例。
   // get a logger instance named "com.foo"
   Logger  logger = Logger.getLogger("com.foo");

   // Now set its level. Normally you do not need to set the
   // level of a logger programmatically. This is usually done
   // in configuration files.
   logger.setLevel(Level.INFO);

   Logger barlogger = Logger.getLogger("com.foo.Bar");

   // This request is enabled, because WARN >= INFO.
   logger.warn("Low fuel level.");

   // This request is disabled, because DEBUG < INFO.
   logger.debug("Starting search for nearest gas station.");

   // The logger instance barlogger, named "com.foo.Bar",
   // will inherit its level from the logger named
   // "com.foo" Thus, the following request is enabled
   // because INFO >= INFO.
   barlogger.info("Located nearest gas station.");

   // This request is disabled, because DEBUG < INFO.
   barlogger.debug("Exiting gas station search");


  有几个有趣的情况,一是当一个记录器实例化后,再一次用相同的名字调用getLogger()会返回对它的引用,这非常有利于用同一个记录器在不同代码或类中记录log信息,另一个是与自然界中祖先先于后代出现不同,一个记录器的祖先可以比后代记录出现的晚,但会自动根据名字之间的关系建立这种家族关系。

4、存放器
  在log4j中,log信息通过存放器输出到目的地。支持的存放器有console, files, GUI components, remote socket servers, JMS, NT Event Loggers, remote UNIX Syslog daemons。通过file存放器,log信息可以被输出到不同的文件中(即不同的目的地)。log信息可被异步存放。
  一个记录器可以有多个存放器,可以通过方法addAppender来增加存放器。一条blog信息如果可被这个记录器处理,则记录器会把这条信息送往每个它所拥有的存放器。
  每个记录器有一个继承开关,其开关决定记录器是/否继承其父记录器的存放器,注意,如果继承则只继承其父记录器,而不考虑更远的祖先的情况。参考下表:
记录器 增加的存放器 继承的存放器 输出的目的地 备注
root A1 not applicable A1 The root logger is anonymous but can be accessed with the Logger.getRootLogger() method. There is no default appender attached to root.
x A-x1, A-x2 TRUE A1, A-x1, A-x2 Appenders of "x" and root.
x.y none TRUE A1, A-x1, A-x2 Appenders of "x" and root.
x.y.z A-xyz1 TRUE A1, A-x1, A-x2, A-xyz1 Appenders in "x.y.z", "x" and root.
security A-sec FALSE A-sec No appender accumulation since the additivity flag is set to false.
security.access none TRUE A-sec Only appenders of "security" because the additivity flag in "security" is set to false.
  
  
5、布局
  布局负责格式化输出的log信息。log4j的PatternLayout可以让程序以类似C语言printf的格式化模板来定义格式。

6、log4j可据程序员制定的标准自动提供一些log信息,这对那类需要频繁log的对象的情况很帮助。对象的自动log,具有继承性.


参考文献:
1、log4j--新的日志操作方法,scriptskychen ,http://www.cn-java.com/target/news.php?news_id=2590
posted on 2005-07-29 17:05 苹果 阅读(1462) 评论(0)  编辑  收藏 所属分类: J2EE/JAVA学习

只有注册用户登录后才能发表评论。


网站导航: