我在Tomcat6上有一个Liferay设置。我最初将Log4j用于portlet/webapps,方法是在classes文件夹中添加log4j.properties文件,在web-inf/lib中添加log4j.jar文件。
现在我们在tomcat/lib文件夹中只有几个quartz作业可用,我还想为这些作业启用log4j日志记录。
对于这些quartz作业,我在tomcat/lib中复制了相同的log4j.properties文件。
使用新配置时,我一直收到以下错误:
Could not instantiate appender named "JOBS"
A "org.apache.log4j.RollingFileAppender" is not assignable a "org.apache.log4j.Appender" variable.
The class "org.apache.log4j.Appender" was loaded by ...如何删除此错误?
有没有办法保留一个单独的log4j.properties文件,它既可以被共享的/lib也可以被portlet/webapps使用。
发布于 2011-06-02 18:25:01
根据this post的说法,问题是你已经配置了你的log4j两次。
我的解决方案是像这样创建记录器实例
私有静态日志记录器= Logger.getLogger(FooBar.class.getName());
并且不将log4j.properties放在任何库或类文件夹下,而是将其放在名为resources的文件夹下。
AFAIK这应该是你的应用程序的两个部分都可以访问的地方。
发布于 2011-06-11 22:09:32
Liferay中的已知问题:http://issues.liferay.com/browse/LPS-9376
在我的例子中,当我开始使用ServiceBuilder服务并将Log4J记录器添加到我的一个...LocalServiceImpl类时,问题就出现了。一旦我从那里移除了Log4J日志,一切都回到了正常--异常消失了。
(我让服务方法抛出异常,并在与ServiceBuilder读取/生成的类无关的代码中捕获它们,但也可以通过将Log4J记录器调用更改为Liferay的LogUtil调用来实现)。
https://stackoverflow.com/questions/5715311
复制相似问题