如何解决外部配置文件中的类引用以进行grails war部署?

时间:2011-10-03 23:15:03

标签: grails log4j perf4j

我正在使用Grails 1.3.7。我建立了一个战争档案&在tomcat中部署它。我有一个外部groovy配置文件,我用它来设置日志记录。我在声明中添加了一些perf4j日志记录appender,但现在配置文件无法编译,因为它无法解析完全限定的类名。

代码如下所示:

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。有关如何解决参考资料的任何想法吗?

谢谢,

基因

1 个答案:

答案 0 :(得分:0)

部署后,有可能从tomcat开始使用log4j。看看lib文件夹,也许它包含log4j jar。如果这是真的 - 它使用不同的类加载器,则无法看到你的perf4j类。

您可以尝试将perf4j jar放入tomcat的lib,可能会解决此问题