2014-06-12 45 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(),因爲消息是要用戶,而不是日誌文件哪臺服務器上運行...