我在我的Config.groovy中的grails应用程序中正确配置了log4j DSL.使用grails run-app运行应用程序转储完全记录,就像我在DSL中指定的那样.但是,在执行grails war生成war文件并将其部署到tomcat之后,日志记录就会消失.我无法看到它在任何地方工作,除了tomcat控制台在调试级别显示数百万条日志语句,并且没有特定于我登录日志文件.
log4j = { appenders { appender new org.apache.log4j.DailyRollingFileAppender(name: "tomcatLog", datePattern: "'.'yyyy-MM-dd", file: "${logDirectory}/snm.log".toString(), layout: pattern(conversionPattern: '[%d{yyyy-MM-dd hh:mm:ss.SSS}] %p %c{5} %m%n')) } root { info 'stdout', 'tomcatLog' additivity = true } info 'grails.app', 'grails.app.controller', 'grails.app.bootstrap', 'grails.app.service', 'grails.app.task', 'commons', 'jsontwitter' }
你能解释一下上面的DSL吗?它发送公共.*和jsontwitter.*类日志到指定的日志文件但没有控制器,服务日志保存在文件中.
谢谢,阿拉姆谢尔
您需要找出tomcat使用的日志目录.这是通过以下grails-app/conf/Config.groovy片段完成的:
def catalinaBase = System.properties.getProperty('catalina.base') if (!catalinaBase) catalinaBase = '.' // just in case def logDirectory = "${catalinaBase}/logs" // default for all environments log4j = { root -> appenders { rollingFile name:'stdout', file:"${logDirectory}/${appName}.log".toString(), maxFileSize:'100KB' rollingFile name:'stacktrace', file:"${logDirectory}/${appName}_stack.log".toString(), maxFileSize:'100KB' } 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' root.level = org.apache.log4j.Level.WARN } // special settings with production env environments { development { log4j = { root -> appenders { console name: 'stdout', layout: pattern(conversionPattern: "%d [%t] %-5p %c %x - %m%n") } warn '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' debug 'com.netjay' root.level = org.apache.log4j.Level.INFO } } }