linux - Linux 上的 Grails log4J 日志记录问题

标签 linux tomcat grails groovy log4j

我对此感到非常沮丧。

我正在尝试执行以下操作:

  • 在 application.log 中记录 INFO 或以上的所有应用程序相关日志
  • 了解控制 catalina.out 配置的因素​​
  • 仅将 WARN 记录到 catalina.out

我在 ubuntu 上运行我的服务器,并且我有 tomcat 的默认配置,其中包括一个带有 logging.properties 的 conf 目录。 。我将此文件重命名为 l.p,这样就不会发生冲突。 (不确定这是否是个好主意)

在我的配置文件中,我有:

def catalinaBase = System.properties.getProperty('catalina.base')
if (!catalinaBase) catalinaBase = '.'   // just in case
def logDirectory = "${catalinaBase}${File.separator}logs"
println "Log Directory: ${logDirectory}"

log4j = {

  appenders {
    rollingFile name: 'applog', file: "${logDirectory}${File.separator}application.log", layout: pattern(conversionPattern: '%d{dd-MM-yyyy HH:mm:ss,SSS} %5p %c{1} - %m%n'), maxFileSize: 1024
  }

  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'

  warn 'org.mortbay.log'

  info applog: 'grails.app'
  root {
   info 'applog'
  }

}

结果,我得到了三个日志:

catalina.2011-01-17.log  catalina.out  localhost.2011-01-17.log

catalina.out 具有以下输出:

Log Directory: /var/lib/tomcat6/logs
log4j:WARN No appenders could be found for logger (org.apache.commons.beanutils.PropertyUtils).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
log4j:ERROR WARNING: Exception occured configuring log4j logging: Cannot invoke org.apache.log4j.FileAppender.setFile - argument type mismatch

我没有看到 application.log在日志文件目录中。任何帮助将不胜感激,我对此感到非常沮丧。

还有一件事,在 Windows 中,所有内容都输出到控制台,并且 application.log 是在 .grails\1.3.5\projects\<appnmae>\tomcat 中创建的。目录

最佳答案

你的问题显然是类型不匹配。具体来说,当您向 log4j 提供 GString 时,它需要一个 String。尝试替换:

"${logDirectory}${File.separator}application.log"

这样:

"${logDirectory}${File.separator}application.log".toString()

编辑:请阅读this BUG

关于linux - Linux 上的 Grails log4J 日志记录问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4724494/

相关文章:

r - 强制 Rstudio 在 linux 上使用特定版本的 R

java - 如何从 webapps java 获取 Windows session 登录?

java - 在tomcat中创建war文件并创建web-inf

grails 2.4 升级,bean 创建失败,找不到 LRUMap

tomcat - 在带有虚拟主机的 Tomcat6 上使用 Grails 时重定向主机不正确

c - 为什么调用 lseek 后读取的文件总是返回 0?

linux - 双启动Windows 7和CentOS 7,Windows 7 BOOTMGR丢失

c - 使用另一个函数中定义的变量

tomcat - 通过域名访问tomcat部署的应用程序(aws)(www.mydomain.com)

grails - Grails maxRows/queryTimeout警告