带有liferay和tomcat的log4j

带有liferay和tomcat的log4j,log4j,tomcat6,liferay,liferay-6,Log4j,Tomcat6,Liferay,Liferay 6,我在Tomcat6上安装了Liferay。最初,我将Log4j用于portlet/webapps,方法是在classes文件夹中添加Log4j.properties文件,在webinf/lib中添加Log4j.jar文件 现在我们在tomcat/lib文件夹中有几个quartz作业,我还想为这些作业启用log4j日志记录 对于这些quartz作业,我在tomcat/lib中复制了相同的log4j.properties文件 使用新配置时,我不断遇到以下错误: Could not instantia

我在Tomcat6上安装了Liferay。最初,我将Log4j用于portlet/webapps,方法是在classes文件夹中添加Log4j.properties文件,在webinf/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文件,它既可以被shared/lib使用,也可以被portlet/webapps使用。

问题是您已经配置了两次log4j

我的解决方案是像这样创建记录器实例

私有静态记录器Logger=Logger.getLogger(FooBar.class.getName())

并且不要将
log4j.properties
放在任何lib或class文件夹下,而是放在名为
resources
的文件夹下

AFAIK这应该是应用程序的两个部分都可以访问的地方。

Liferay中的已知问题:

在我的例子中,问题发生在我开始使用ServiceBuilder服务并将Log4J Logger添加到我的一个…LocalServiceImpl类时。 一旦我删除了Log4J日志,一切都回到了正常状态——异常消失了


(我让服务方法抛出异常,并在与ServiceBuilder读取/生成的类无关的代码中捕获它们,但也可以通过将Log4J logger调用更改为Liferay的LogUtil调用来完成)。

我不是在插件环境中开发的,所以这不可能是可行的解决方案。不过,谢谢您的回答,这可能会在其他时间对我有所帮助。您提到的“resources”文件夹是在“[Portlet Dir]/docroot/WEB-IF/src”或其他位置下创建的新文件夹?另外,是否在每个portlet的“WEB-INF/lib”下包含log4j.jar?告诉属性文件位置。是Liferay的一个解决方案,与我的有所不同,但它告诉我们罐子的位置。如果没有Liferay,您可以按照建议将它们放在WEB-INF/lib中。希望这能提供更多的见解。