2014-06-12 34 views
0
   //log.info "${message(code: 'default.mylabel.label', default: 'My Default output: $myVariable', args: [${message(code: 'ignore.myVariable.label', default: '$myVariable'})])}" 
       //log.info "${g.message(code: 'default.mylabel.label', default: 'My Default output: '+myVariable, args: [myVariable])}" 
       def ff="${message(code: 'default.mylabel.label', default: 'My Default output: ')}" 

       log.info "${ff}" 

我已经尝试了各种各样的事情,如果我删除$ {则返回其余部分字符串,但同时试图通过$ {消息通过对log.info它返回该消息即不接受一个HashMap

Caused by: groovy.lang.MissingMethodException: No signature of method: java.lang.String.call() is applicable for argument types: (java.util.LinkedHashMap) values: [[code:default.something.label, ...]] 

任何人都知道在log.info调用中是否有方法让i18n支持?

UPDATE 这是主应用程序返回的消息,log.info为pumped from a plugin。我已经将这个页面作为链接尝试,上面的错误消息在运行时返回到主应用程序。

+0

我认为我发现messageSource – Vahid

+0

的答案注入似乎不是解决方案:( – Vahid

回答

1

以下是在配置文件中我log4j的配置和代码为我工作

log4j = { 
appenders { 
    rollingFile name: 'catalinaOut', maxFileSize: 1024, fileName: "catalina.out" 
    file name: 'stacktrace', file: "catalina.out", layout: pattern(conversionPattern: '%c{2} %m%n') 
} 

environments { 
    development { 
     debug 'grails.app.controllers', 'stdout' 
     debug 'grails.app.services' 
    } 
    production { 
     root { 
      debug 'grails.app', 'catalinaOut' 
      debug 'grails.app', 'stdout' 
      error 'catalinaOut' 
      warn 'catalinaOut' 
      info 'catalinaOut' 
      additivity = true 
     } 
    } 
} 

error stacktrace: "StackTrace" 

error 'org.codehaus.groovy.grails.web.servlet', // controllers 
     'org.codehaus.groovy.grails.web.pages', // GSP 
     'org.codehaus.groovy.grails.web.sitemesh', // layouts 
     'org.codehaus.groovy.grails.web.mapping.filter', // URL mapping 
     'org.codehaus.groovy.grails.web.mapping', // URL mapping 
     'org.codehaus.groovy.grails.commons', // core/classloading 
     'org.codehaus.groovy.grails.plugins', // plugins 
     'org.codehaus.groovy.grails.orm.hibernate', // hibernate integration 
     'org.springframework', 
     'org.hibernate', 
     'net.sf.ehcache.hibernate' 
} 
+0

明天我会看看我的log4j,但非常怀疑它涉及到这个,因为从grails返回错误。另一件事我有忘了提及哪一个我将更新的问题是,这是在一个插件 – Vahid

+0

好愚蠢的我,我把log4j配置移动到外部配置,但我目前正在测试代码没有log4j配置定义的测试框因此我认为这一定是问题所在,尽管因为它一直在登录,所以可能是为什么它错过了 – Vahid

0

可能不是问题的正确措辞的问题是通过服务访问国际化。答案竟然是这样的:

​​

这寻找我的messages.properties文件的密钥称为default.mylabel.label,它通过两个变量在这个试验本身作为一个数组两次如果找不到,则显示缺省值,最后显示网站运行的语言环境。

如果是闪烁从服务一回事消息,但我猜你会需要通过request.getLocale(),因为消息是要用户,而不是日志文件哪台服务器上运行...