DANCE WITH JAVA

开发出高质量的系统

常用链接

统计

积分与排名

好友之家

最新评论

Log4J的一些小技巧和使用中一些须要注意的问题。


一、为多个项目指定使用哪个log4j文件
情况一:多个小项目合成一个大项目,多个小项目有自己不同的入口,这个时候如果使用同一个log4j文件,各个项目的输
出会混乱在一起,如果拆分成多个小项目,看起来又比较散不太好管理。
情况二:一个项目实施在linux上,编写在windows上,log4j的输出目录/opt/xxx/web.log
这个时候开发者被迫必须在本机的workspace所在的目录加入一个opt/xxx/web.log的目录和文件
同时,大多数情况下linux上的服务是不须要输出log到Console,只要输出到文件
而windows大部份是只须要输出到console,不须要输出到文件
本地调试的时候log4j的级别多是debug ,而实际实施的时候多是之上的级别
造成须要不停的修改log4j的属性文件,cvs同步的时候不停的提示
也许你说可以整个项目完成再来写log4j的属性文件,但有的时候这个效果并不好。
因为还有这种时候,项目完成(包括log),反复测试的这段时间。

解决:解决办法很简单,建立一个log4j的配制文件的目录,在这个目录下为每个小项目建立一个目录,
每个目录下放着自己的log4j配制,然後把这些目录作为每个小工程的classpath的第一个,ok上边的问题就
解决了。这个时候可以写一个log4j放在src下,用来开发时候调试用,而真正服务器上使用的都在各自的文件夹下

二,为默写包,某些类定义不同的log4j级别
是否想过这中需求呢,一个项目调试的时候,希望其中默写包不打出log信息。
比如struts的包,spring的包,还有你引用的别人已经开发好包,或者你自己写的类,但是你不想看到这个
类的log信息.但是你须要调试当前的一些class,log级别必须设置在debug级别
这个时候可以在log4j的属性文件中加入如下内容:
log4j.logger.包名or类名=高的级别
例如:
log4j.logger.org.springframework=error

三、注意事项

1 public   void  execute() {
2   // ..
3  logger.debug( " aa " + " bb " + " cc " );
4 }

5


是否这么写过呢?这样写是有些问题的。当你把log级别调整到info或者更高的时候,log信息是不输出了
但是字符串的拼接一样进行了,使你的程序效率降低,实验一下

1 public   void  execute() {
2   // ..
3      logger.debug(getStr());
4 }

5 public  String getStr() {
6      System.out.println( " execute getStr " );
7 }

8


调整log4j属性文件级别到info 结果getStr()照样执行了
解决办法:

1 public   void  execute() {
2   // .
3      if (logger.isDebugEnabled()) {
4         logger.debug(getStr());
5     }

6 }

7

posted on 2006-11-29 17:33 dreamstone 阅读(2808) 评论(1)  编辑  收藏 所属分类: 利器片段

评论

# re: Log4J的一些小技巧和使用中一些须要注意的问题。 2006-11-29 22:47 joss

请教一下,把这些目录作为每个小工程的classpath的第一个,具体怎么做?  回复  更多评论   


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


网站导航: