`
hanyou
  • 浏览: 21885 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Liferay的log4j的日志配置

阅读更多
    学习一个软件,需要了解此软件工作原理,在liferay代码中都使用了log4j的log输出,我们需要设置一下,把这些日志输出出来,方便我们进行调试。

    Liferay使用了Apache Log4j处理素有的日志操作,允许我们配置从FATAL到DEBUG不同的信息的输出级别。同时还可以配置显示不同的包或者类的日志信息的输出级别。

    缺省情况下,日志是使用CONSOLE标准输出的,在屏幕上可以看到,当然一些应用服务器是将这些信息输出到应用服务器的日志中的。例如:
Tomcat: $TOMCAT/bin/catalina.out
Geronimo: $GERONIMO/var/log/geronimo.log
JBoss: $JBOSS/server/default/log/

    使用Admin Portlet进行动态配置,使用test用户登录后,选择Admin的Portlet,在Server页签下面的Log Levels,将列出所有的管理的类的日志级别,从每一行的Level级别中选择一个输出级别,然后点下面的保存按钮就完成了设置,但这个设置是临时性的,设置在内存中,当服务器重新启动后,此次设置就失效了,因此系统重新读取了META-INF/portal-log4j.xml的配置,这个配置文件在portal-impl.jar包中。

     为了使配置长久有效,因此需要自己定义一个扩展的配置文件portal-log4-ext.xml,在这个文件中的配置将override全部或者部分portal-log4j.xml的配置。首先拷贝portal-log4j.xml到portal-log4-ext.xml。建议保留你所要修改的入口,删除其他你不需要修改的入口。

例如我们需要将hibernate的级别修改成为INFO
<category name="org.hibernate">
   <priority value="ERROR" />
</category>

新的portal-log4-ext.xml文件如下:
<?xml version="1.0"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<category name="org.hibernate">
   <priority value="INFO" />
</category>
</log4j:configuration>

一旦定义好了portal-log4-ext.xml,你必须将此文件部署到classpath中的META-INF下面,同时将log4j.dtd文件拷贝过去。

对于JBOSS用户注意,JBOSS的$JBOSS/server/default/conf/log4j.xml将会override liferay的日志配置,认真阅读JOBSS的日志文件。

    log4j的初始化是在MainServlet被加载的时候进行的,在InitAction.run()方法中:

if (GetterUtil.getBoolean(SystemProperties.get("log4j.configure.on.startup"), true) && !ServerDetector.isSun()) {

   ClassLoader classLoader = getClass().getClassLoader();

   Log4JUtil.configureLog4J(classLoader.getResource("META-INF/portal-log4j.xml"));
   Log4JUtil.configureLog4J(classLoader.getResource("META-INF/portal-log4j-ext.xml"));
}

    如果portal-log4-ext.xml不工作,一般两个原因,一个是没有找到文件,另外一个是文件内语法错误。

3
1
分享到:
评论
1 楼 fly_ever 2008-03-26  
liferay的日志配置在class文件下的log4j.properties 进行了配置,
在portal-log4j.xml 也进行了配置。不知道具体的这两个配置文件的关系。
log4j.properties负责日志输出方式,
portal-log4j.xml负责日志输出的优先级别设置,是这样吗?

相关推荐

Global site tag (gtag.js) - Google Analytics