【问题标题】:Reading Grails configs from groovy从 groovy 读取 Grails 配置
【发布时间】:2014-05-06 12:01:13
【问题描述】:

我刚刚尝试从 groovy 读取 grails 配置。 ConfigSlurper 易于使用,但由于它执行配置,因此需要所有依赖项。就我而言,它抱怨缺少log4j 类。 即使我将这个类导入到我的ConfigSlurper 脚本中,配置本身也会遇到这个问题。

知道如何使配置可以访问log4j 类吗?

更新:现在我面前有一个合适的键盘,我可以详细说明我的问题:

我有配置 log4j 的 grails 配置,如文档中所述:

import org.apache.log4j.*

log4j = { 
  appenders { 
    appender new RollingFileAppender( 
         name: "myAppender", 
         maxFileSize: 1024, 
         file: "/tmp/logs/myApp.log"
    ) 
  } 
}

然后我尝试像这样解析它们:

def file = new File(<config location>)
def config = new ConfigSlurper().parse(file.toURL())

然后 Slurper 抛出异常...

【问题讨论】:

  • 如果您正在执行任何对 log4j 类具有静态引用的 Groovy 代码(配置文件或其他),那么这些 log4j 类需要位于类路径中。
  • 这就是我虽然但没有设法解决的问题。我在 groovyConsole 中尝试了我的脚本。在脚本中创建一个新的 RollingFileAppender 没有问题,但是 ConfigSlurper 仍然抱怨它。但是我在我的配置文件中找到了一种更好的方法来完全避免它......在当前文档中找到它。
  • 您说“即使我将此类导入到我的 ConfigSlurper 脚本中”。进口是不够的。如果类在类加载器中不可用,则导入将不起作用,这通常意味着在类路径中可用。
  • Mh.是的,我知道类路径,但我认为如果周围的脚本可以访问类......但我现在也找到了更好的解决方案。一会儿就写下来……

标签: grails groovy


【解决方案1】:

我找到了两个解决方案:

首先,文档展示了一种无需实例化即可配置 rollingFileAppender 的方法:http://grails.org/doc/2.3.7/guide/conf.html

其次,我设法用 a 解决了我原来的问题

@Grab('log4j:log4j:')

在我的脚本前面 - 如果您在防火墙后面,这不是一个好的解决方案...

正如 Jeff 已经说过的,也应该可以将正确的 jar 文件放在类路径中,但我不得不说我经常与 cp 斗争 :-( 当我试图将 log4j.jar 放在.groovy 文件夹,我没有成功 - 但我猜这是因为 groovy 安装不正确。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 2014-08-08
    • 1970-01-01
    相关资源
    最近更新 更多