如何解析grails war部署的外部配置文件中的类引用?

如何解析grails war部署的外部配置文件中的类引用?,grails,log4j,perf4j,Grails,Log4j,Perf4j,我正在使用Grails1.3.7。我构建了一个war文件并在tomcat中部署它。我有一个外部groovy配置文件,用于设置日志记录。我在声明中添加了一些perf4j日志附加程序,但现在配置文件无法编译,因为它无法解析完全限定的类名 代码如下所示: log4j = { ... // file appender that writes out the URLs of the Google Chart API graphs generated by the performanceGr

我正在使用Grails1.3.7。我构建了一个war文件并在tomcat中部署它。我有一个外部groovy配置文件,用于设置日志记录。我在声明中添加了一些perf4j日志附加程序,但现在配置文件无法编译,因为它无法解析完全限定的类名

代码如下所示:

log4j = {
    ...
    // file appender that writes out the URLs of the Google Chart API graphs generated by the performanceGraphAppender
    def performanceGraphFileAppender = new org.apache.log4j.FileAppender(
        fileName: "log/perfGraphs.log",
        layout: pattern(conversionPattern: '%m%n')
    )
    appender name: 'performanceGraphFileAppender', performanceGraphFileAppender

    // this appender creates the Google Chart API graphs
    def performanceGraphAppender = new org.perf4j.log4j.GraphingStatisticsAppender(
        graphType: 'Mean',      // possible options: Mean, Min, Max, StdDev, Count or TPS
        tagNamesToGraph: 'tag1,tag2,tag3',
        dataPointsPerGraph: 5
    )
    performanceGraphAppender.addAppender(performanceGraphFileAppender)
    appender name: 'performanceGraph', performanceGraphAppender

    ...
}
写入日志的错误消息如下:

script1317679813518843914255.groovy: 38: unable to resolve class org.perf4j.log4j.GraphingStatisticsAppender 
@ line 38, column 34.
    def performanceGraphAppender = new org.perf4j.log4j.GraphingStatisticsAppender(
我正在构建的war文件包含所有必需的JAR。有没有关于如何让它解决引用问题的想法

谢谢


Gene

部署后,它可能会开始使用tomcat的log4j。看看
lib
文件夹,也许它包含log4jjar。如果这是真的-它使用不同的类加载器,那就看不到perf4j类


您可以尝试将perf4j jar放入tomcat的
lib
,也许它可以解决这个问题,这很有趣。我要试一试。不过,我确实想知道它是如何工作的:grails运行时与perf4j文件位于同一个WAR文件中。为什么它找不到他们?我遗漏了什么?当我将perf4j和log4j jar放入tomcat/lib文件夹时,代码似乎运行正常。我想知道为什么它不从应用程序WAR文件中提取类。这是不同类加载器的问题。看起来,tomcat在其他地方有log4j类,而不仅仅是您的war(因为大多数项目都使用log4j)和JVM声明使用它(=来自不同的类加载器)。和此同时,per4j只是在您的war中,但包含log4j(=邻居类加载器)的类加载器无法访问您的libs。在我将log4j放入lib文件夹之前,它也没有解析logging.groovy文件中提到的log4j类。所以这对我来说仍然是个谜。